본문 바로가기

딥러닝,CNN,pytorch

(5)
[딥러닝] 1개층을 가진 뉴럴 네트워크 경사하강법(backpropagation, backward 계산) , 역전파 단 1개의 parameter와 1개의 인풋, 1개의 아웃풋을 가진 매우 단순한 층으로 backpropagation을 계산 해 보았습니다. 참고로, x1이 2, w1이 3 , y1이 6 이라는걸 알았다는것 자체가 forwarding이라고생각하시면 되고 이것을 안다는 전재로 실제값과 y1을 MSELOSS(평균제곱오차)를 통해 오차를 구해주고 이를 바탕으로 오차와 W1의 영향 정도를 알아내서 W1을 개선해나가는 것이 backward (backpropagation)이라고 생각하시면 될 것 같습니다. 이 예시는 너무 쉬운 예시이므로 조금 더 복잡한 sigmoid 활성화 함수를 사용하는 2계층 2파라미터 역전파를 계산하고 싶으시면 다음 블로그를 참조 해 주세요. https://gomguard.tistory.com/..
딥러닝 활성화함수(Relu , Maxpool2d) class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.layer1 = torch.nn.Sequential( torch.nn.Conv2d(1, 8, kernel_size=3,stride=1,padding=1), torch.nn.ReLU(), torch.nn.MaxPool2d(2, 2) ) self.layer2 = torch.nn.Sequential( torch.nn.Conv2d(8, 16, kernel_size=3, stride=1, padding=1), torch.nn.ReLU(), torch.nn.MaxPool2d(2, 2) ) self.fc = torch.nn.Sequential( torch.nn.Linear(40000,..
파이썬 pytorch를 이용해서 CNN을 코딩으로 구현해보자. 이전의 포스트에서 CNN의 개념에 대해서 설명했다. 그렇다면 코딩을 참고하면서 pytorch기반의 CNN이 어떻게 구현되는지 알아보자. (Tenserflow의 방식도 거의 비슷하다.) 일단, CNN으로 형성된 모델을 한번 살펴보자. 모델의 전체적인 모양은 이렇게 생겼다. 세부적으로 뜯어서 보자면, keep_prob은 CNN모델의 dropout에 사용하고자 선언 한 것인데 이는 나중에 다시 포스팅 할 예정이니 무시해도 좋다. 또한 ReLU는 gradient vanish현상을 막아주는 용도이고 MaxPool2d은 output size를 줄이기 위해 사용했다. 이 것들(ReLU,MaxPool,DropOut)의 자세한 설명은 나중에 따로 포스팅하고 지금은 CNN모델만 집중해서 살펴보자. 이 모델은 layer가 ..
딥러닝의 인공 신경망(ANN,DNN,CNN)에 대하여 딥러닝은 인공 신경망을 기초로 하고 있다. 인공 신경망이라고 불리는 ANN은 사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘이다. 인간의 뇌에서 뉴런들이 어떤 신호나 자극을 받고 그 자극이 어떠한 Threshold값을 넘어서면 결과신호를 전달하는 과정 에서 착안 한 것이다. 여기서 들어오는 자극이나 신호를 input으로 하고 Threshold값은 weight, 결과를 내는것이 Output 이다. 그림을 통해 관찰해보자. 왼쪽의 그림이 ANN이고 오른쪽의 그림(2개 이상의 은닉층)이 DNN이라고 보면 될 것 같다. 이 두개의 모델은 weight를 가지는 선형 모델이라고 생각하면 된다. 무슨 얘기냐면, 왼쪽의 그림처럼 2개의 인풋값을 x[0],x[1] 이라고 하면 y=w[0]x[0]+w[0]x[..
파이썬, 딥러닝 손실함수 교차엔트로피손실(CEE) 개념정리 딥러닝 모델을 구현할 때, 모델을 통해 예상한 값과 실제 값의 LOSS를 정의할때 ​ MSE_LOSS와 CROSS_ENTROYPE_LOSS가 많이 사용된다. ​ 120*120크기의 이미지를 받아 이 이미지가 사과이면 0, 바나나면 1, 메론이면 2 라고 분류하는 모듈을 만들었다고 치자. ​ 그렇다면, y_pred=tensor([[a,b,c]....*배치의 개수])의 형식으로 나올 것이고 a=사과일 확률,b=바나나일 확률, c=메론일 확률 이게 된다. ​ 하지만, y_pred는 엄연한 추정 값이다. ​ 예를들어, a=0.1 b=0.6 c=0.2 라고 하면 우리는 이 그림을 '바나나' 라고 추정을 하게 되는 것이다. ​ 그렇다면 우리는 이 y_pred를 loss=nn.CrossEntroypeLoss(y_pr..