목록전체 글 (768)
우노
✓, ✓, ☑
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmkxgg/btq1z49HO2r/O4eAVoafemefJaMs1ZaCQk/img.png)
Anaconda에 설치된 Python 버전 확인 conda search python Anaconda Python 버전 변경 # conda install python=원하는 파이썬 버전 conda install python=3.7.0
예제 코드 import matplotlib.pyplot as plt plt.rc('font', size=20) # 기본 폰트 크기 plt.rc('axes', labelsize=20) # x,y축 label 폰트 크기 plt.rc('xtick', labelsize=50) # x축 눈금 폰트 크기 plt.rc('ytick', labelsize=20) # y축 눈금 폰트 크기 plt.rc('legend', fontsize=20) # 범례 폰트 크기 plt.rc('figure', titlesize=50) # figure title 폰트 크기 참고 https://bjy2.tistory.com/82
들어가기 앞서, 해당 포스트에서는 현존하는 코딩 패러다임에 대해 간단하게 다뤄보겠습니다. 절차적 프로그래밍(Procedural Programming) 절차적 프로그래밍이란, 프로그램을 재사용 가능한 함수 단위로 나누는 프로그래밍 구조를 의미합니다. 여기서 말하는 '절차'는, 순수한의미의 '절차'가 아닌, Procedual, 즉 함수를 의미합니다. 절차적 프로그래밍의 장단점은 아래와 같습니다. 장점 코드를 단위화할 수 있습니다. 단점 변수나 상수 등의 값들을 관리하는 '자료형'과 해당 자료형을 사용하는 '함수'가 분리되어 사용됩니다. 따라서, 사람들은 위 단점을 해결하기 위해, 자료형과 함수를 묶어서 사용하는 방법을 모색하게 되었습니다. 객체 지향 ..
Java와 Scala는 둘 다 JVM 위에서 실행되며, 기존의 Java 라이브러리를 그대로 사용할 수 있다는 공통점이 있습니다. 반대로 Java로 작성된 프로그램에서 Scala로 작성된 라이브러리를 사용할 수도 있습니다. Java는 객체지향을 지원하지만 Scala는 함수형과 객체지향을 모두 지원하며, Scala는 Java의 한계를 극복하기 위해 등장했습니다. Scala는 "함수형을 추구하되 객체지향도 쓸수 있다." 정도이지만, 덕분에 굉장히 강력해질 수도, 복잡해질 수도 있습니다. 해당 포스트에서는 Java와 Scala의 간단한 3가지 차이점에 대해서 다뤄보겠습니다. 1. 함수형 프로그래밍 언어 Scala는 "순수 함수"를 지향하는 함수형 프로그래밍 언어입니다. 순수 함수란? 함수의 입력이 주어지면, 항..
System.currentTimeMillis() console이 아닌 jar file을 통해 Apache Spark를 작업할 때, Spark 작업의 부분적인 실행 시간을 확인하고 싶다면, 아래와 같이 로그를 찍어가며 확인 할 수 있다. 사용 예제 // Scala에서 사용할 수 있는 Java 기반 로깅 유틸리티 import org.apache.log4j.LogManager val log = LogManager.getRootLogger // Time 측정 (ms단위) val tik0 = System.currentTimeMillis() val tik1 = System.currentTimeMillis() // 총 실행시간 (ms단위) val res = "Time taken : " + (tik1-tik0).toS..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GJUXc/btq0zdSx00u/zrtNQRDpPVJUk0bjE800MK/img.png)
Semantic Segmentation이란? Semantic Segmentation 은 컴퓨터비젼 분야에서 가장 핵심적인 분야 중 하나이며, 위 그림처럼, 이미지 내에 있는 물체들을 의미 있는 단위로 분할해내는 것입니다. 더 구체적으로는 아래 그림처럼, 이미지의 각 픽셀이 어느 클래스에 속하는지 예측하는 것입니다. Semantic Segmentation은 다른 컴퓨터비젼 문제들과 마찬가지로, Deep Convolution Neural Network (깊은 신경망)을 적용해서 많은 발전을 이루었습니다. 이번 포스트에서는 Semantic Segmentation 에 대해서 자세히 설명하고, 자주 활용되는 몇가지 접근방법을 알아보겠습니다. Semantic Segmentation의 의미와 목적 Semantic S..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uWXZE/btq0nN1OcYt/W0zSCsEGRwmf2tbkogSvTk/img.jpg)
Spark gemm Spark의 gemm 함수는 SparseMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/apache/spark/blob/fc182f7e7f9ff55a6a005044ae0968340cf6f30d/mllib/src/main/scala/org/apache/spark/mllib/linalg/BLAS.scala#L478 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은 아래와 같은 형태로 결과 데이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmXs6Z/btq0oKpHjnL/vv9nqryOulyWJSRKKTDCMk/img.jpg)
Breeze canMulM_DM Breeze의 canMulM_DM 함수는 CSCMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L647 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은..
Breeze canMulM_M Breeze의 canMulM_M 함수는 CSCMatrix * CSCMatrix를 지원합니다. 즉, Sparse Matrix 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L708 Code implicit def canMulM_M[@expand.args(Int, Float, Double, Long) T] : breeze.linalg.operators.OpMulMatrix.Impl2[CSCMatrix[T], CSCMatri..