본문 바로가기
728x90
반응형

AI24

[PytorchToC++] 03. Visual Studio에 LibTorch 설치하기 1. libtorch download - OS와 CUDA를 컴퓨터 환경에 맞게 설정하고 debug, release 버전 둘 다 다운로드한다. 절대 경로로 참조할 예정이므로 폴더 위치를 신중하게 선택! 2. Visual Studio에서 C++, Windows 선택 후 빈 프로젝트를 생성한다. 다운로드 받은 라이브러리 사용을 위해 속성 페이지에서 추가 포함 디렉터리를 설정해주어야한다. 프로젝트 -> 속성 구성 tab에서 Debug, Release 를 변경하며 동일하게 진행하되, debug와 release버전의 폴더는 다르게 설정한다. C/C++ - 일반 - 추가 포함 디렉터리에서 libtorch(debug/release) 라이브러리가 포함된 경로를 추가한다. C/C++ - 언어 - 준수모드 를 아니요로 변경.. 2021. 9. 29.
[PytorchToC++] 02. TorchScript 분석 torch_tracing과 torchscript 비교 에 이어진다. 1. TorchScript 분석 Module을 아래와 같이 구성하면 재사용성과 가독성이 높아진다. MyDecisionGate는 제어 흐름을 활용한다. 아래에 출력되는 grad_fn은 잠재적으로 복잡한 프로그램을 통해 미분을 계산할 수 있게된다. 코드 중 미분값을 명시적으로 정의할 필요가 없는 경우도 있는데 pytorch는 변화도 테이프를 사용하여 연산이 발생할 때만 이를 기록하고 미분값을 계산할 때 거꾸로 재생한다. (많은 프레임워크들이 프로그램 코드로부터 기호식 미분을 계산하는 접근법을 취하고 있음) 1 ) 모듈 1 : torch.nn.Module 을 상속받음 import torch class MyDecisionGate(torch.nn.. 2021. 9. 29.
[PytorchToC++] 01. TorchScript 비교 및 simple code review > Python에서 Pytorch로 작성한 모델을 C++ 환경에서 사용하기 위해 Develop을 진행한다. Python에서 jit로 모델을 작성한 후 C++에서 LibTorch를 사용하여 로드하고자 한다. 1. python 환경 python 환경에서 jit로 모델을 모듈화하는 과정은 두 가지 방법이 있다. [ torch_tracing ] : 입력값을 사용하여 모델 구조를 파악한 뒤 입력값의 모델 안에서의 흐름을 통해 모델을 기록한다. flow가 기록되기 때문에 statically fix된 그래프이다. [ annotation(script) ] : torchscript 컴파일러가 직접 모델 코드를 분석하여 컴파일을 진행한다. 따라서 dynamic한 control flow(조건 분기, break 등)를 사용할.. 2021. 9. 28.
09. 나이브베이즈 분류 ( Naive Bayse classification ) 나이브 베이즈 분류? 기본적으로 각 속성값 확률을 기반으로 범주에 속한 인스턴스를 확률로 결정한다. '나이브'는 다른 속성과 독립적이라는 의미로, 속성값은 다른 속성값과 관계가 없음을 의미한다. 베이즈 정리 매개변수 x,y가 있을 때, 분류1에 속할 확률이 p1(x,y) 이고, 분류 2 에 속할 확률이 p2(x,y)이면 * p1(x,y) > p2(x,y) 이면, 분류1 * p1(x,y) 2020. 5. 21.
10. 멀티암드 밴딧 알고리즘( MAB;Multi-armed bandit ) 가장 처음에 공부했던 A/B 검정에서 이러한 결론이 있었다. 따라서, 멀티암드 밴딧과 같은 새로운 유형의 실험설계가 필요해졌다. 멀티암드 밴딧은 실험설계에 대한 전통적인 통계적 접근방식보다 명시적인 최적화, 빠른 의사 결정을 위해 사용한다. 어원 슬롯머신의 팔(=밴딧)을 당기면 돈을 얻게 된다. 만약, 슬롯머신에 둘 이상의 손잡이가 달려있고 각 손잡이가 다른 속도로 돈을 지불한다면 우리는 많은 상금이 나오는 손잡이를 빨리 확인하고자 할 것이다. 다음과 같이 가정해보자. 손잡이 A : 50번 중 10번 승리 손잡이 B : 50번 중 2번 승리 손잡이 C : 50번 중 4번 승리 그러면 우리는 A가 최고의 손잡이인 것 처럼 보인다. 하지만 사실 B,C가 더 좋다면 우리는 A를 당기기 때문에 B,C를 놓치게 .. 2020. 5. 20.
08. 서포트 벡터 머신 ( support vector machine ) 서포트 벡터 머신( Support Vector Machine ) 서포트 벡터 머신은 분류 과제에 사용할 수 있는 강력한 머신러닝 지도학습 모델이다. 결정 경계(Decision Boundary), 기준 선을 정의하여 어느 쪽에 속하는지 확인하여 분류를 하는 것이다. 최적의 결정 경계(Decision Boundary) 다른 그림으로 얼마나 많은 선을 그을 수 있을지 살펴보자면? 가운데 색칠된 부분에서 기울기를 만족한다면, 모든 선은 결정 경계가 될 수 있다. 따라서 똑같은 군집이 있더라도 다음과 같이 결정 경계를 설정할 수 있다. 각 그룹의 선을 살펴보았을 때, 그룹C는 파란 점과 너무 가까워서 아슬아슬해보인다. 그렇다면 가장 안정적이어 보이는 결정 경계는 ? 아마 F일 것이다. 두 분류에서 거리가 가장 멀.. 2020. 5. 19.
09. 카이제곱 검정 ( chi-squared test ) 카이제곱검정은 카이제곱 분포(chi-squared distribution)를 따른다. 카이제곱 분포란? 정규분포를 따르는 모집단에서 크기가 n인 표본을 무작위로 반복 추출한다. 이 때 각 표본의 분산들이 카이제곱 분포를 따른다고 한다. 자유도가 커질수록 정규분포에 가까워지며 다음과 같이 나타난다. 자유도가 k인 카이제곱분포의 확률밀도함수(pdf) 공식은 다음과 같다. 카이제곱 분포는 모분산에 대한 추정과 검정에 사용된다. 관측도수가 이론 상의 분포에 적합한지, 여러 집단 사이의 독립성 검정이 다른 특성에 영향을 미치는가에 대한 검정을 한다. 자료가 빈도로 주어졌을 때, 특히 명목척도 자료 분석에 이용된다. 카이제곱 검정방법 독립성 검정: 두 변수는 서로 연관성이 있는가 없는가? 적합성 검정: 실제 표본이.. 2020. 5. 18.
07. 로지스틱 회귀( Logistic Regression ) 로지스틱 회귀란? 로지스틱 회귀는 지도 학습의 분류 문제에 사용된다. 데이터가 집단 각각에 속하는 확률을 계산하여 데이터를 분류해낸다. 선형함수가 아닌 로짓함수를 사용하여 진행한다. 따라서 회귀분석의 모형은 목표집단에 속할 확률과 그렇지 않을 확률의 비율에 자연로그를 취한 값을 출력한다. 이를 그려보면 비선형 S자의 형태를 띈다. import matplotlib.pyplot as plt import numpy as np # f(x) = 1 / ( 1 + e ** (-x))를 그려보자 x = np.arange(-10,10,0.1) y = 1 / ( 1 + np.exp(-x)) plt.scatter(x,y) 확률 : 발생할 확률 / 전체 오즈 : 발생할 확률 / 발생하지 않을 확률 ( 0 ~ 무한대 ) 로짓.. 2020. 5. 18.
06. 선형 회귀의 한계점 다음 예제를 통해 선형 회귀에 어떤 한계가 있는지 살펴보자. x_data가 1, 2, 5, 8, 10이다. y값은 0.5 이상이면 1(pass), 0.5 미만이면 0(fail)이라고 하자. # module import import tensorflow as tf # 학습 data 생성 x_data = [1,2,5,8,10] y_data = [0,0,0,1,1] x = tf.placeholder(dtype=tf.float32) y = tf.placeholder(dtype=tf.float32) W = tf.Variable(tf.random_normal([1]), name = "Weight") b = tf.Variable(tf.random_normal([1]), name = "bias") H = W * x + .. 2020. 5. 17.
08. 분산분석( ANOVA ) 분산분석이란? 기존에 공부했던 A/B 검정은 두 개의 그룹을 비교하였다. 그렇다면 A,B,C,D 그룹의 데이터를 비교한다고 가정하자. 여러 그룹 간의 통계적으로 유의미한 차이를 검정하는 통계적 절차를 분산분석(ANOVA ; analysis of variance)이라고 한다. 예를 살펴보자. Page 1 Page 2 Page 3 Page 4 164 178 175 155 172 191 193 166 177 182 171 164 156 185 163 170 195 177 176 168 평균 172 185 176 162 이런 데이터가 있다면, A/B 검정을 할 때는 (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) 의 모든 페이지를 비교해야 한다. 하지만 이렇게 한 쌍씩 비교하는 횟수가 증가할수록.. 2020. 5. 17.
728x90
반응형