본문 바로가기

AI/PyTorchZeroToAll by Sung Kim11

[PyTorchZeroToAll] 11. Advanced CNN 이번 시간에는 좀 더 발전된 CNN에 대해서 알아보도록 하겠다. 여러 필터의 사이즈 중에서 어떤 것을 사용해야할까? 위 예에서는 5 x 5, 3 x 3, 1 x 1의 필터들을 쓴 다음 합친다. 맨 처음에 1 x 1 필터로 convolution을 한 뒤 5 x 5, 3 x 3 등과 연결하고, average pooling도 따로 수행한다. 그렇다면 왜 1 x 1 convolution을 수행해야할까? 우리가 56 x 56 이미지를 가지고 있고, 그것의 깊이가 64라고 하자. 우리는 1 x 1 convolution을 여기에 적용하면 결과는 1 x 56 x 56이 될 것이다. dot product이기 때문에 결과의 채널이 1의 깊이를 가지게 되는 것이다. 1 x 1 convolutional layer로 우리는 필.. 2020. 1. 28.
[PyTorchZeroToAll] 10. CNN 이번 시간에는 신경망 구조 중 가장 유명한 CNN에 대해 알아보도록 하겠다. 이미지를 입력으로 받고, convolution을 해서 feature map들을 얻는다. subsampling을 한 뒤 linear layer로 이어져서 classification을 수행한다. convolution이 무엇인지 알아보자. 만약 사진 한 장이 있다면 그것은 가로폭(width), 세로폭(height), 그리고 색을 나타내는 R(빨강), G(초록), B(파랑)의 수치가 있을 것이다. softmax 함수를 적용하는 경우에는 모든 픽셀 정보를 입력으로 넣을 것이다. 그런데 convolution의 경우에는 이미지의 매우 작은 부분, 패치(patch)만 다룬다. 결국 전체 이미지를 다 보긴 하겠지만, 한 번에 한 패치만 처리한다.. 2020. 1. 28.
[PyTorchZeroToAll] 9. Softmax Classifier 이번 시간에는 신경망에서 폭넓게 쓰이는 softmax classifier에 대해서 알아보도록 하겠다. 손으로 쓴 숫자들이 0~9 사이에서 무엇인지를 알아보는 MNIST 데이터셋이다. 이것은 classification 문제이고, 하나의 입력을 받아서 0 또는 1의 하나의 출력을 내는 이미 존재하는 logistic regression model을 사용할 수 있을 것이다. 그러나 우리는 0~9까지의 10개가 가능하기 때문에 출력이 10개인 것이 더 합당할 것이다. 이것을 어떻게 구현하고 출력을 예측해야할 것인가? 우리는 matrix 곱셈을 이용해서 이것을 계산할 수 있다. 저번 시간에 왼쪽 행렬과 같이 입력이 2개일 때, 가중치 행렬이 2 x 1의 형식이어서, 출력 결과를 올바르게 낼 수 있었다. 그렇다면, .. 2020. 1. 27.
[PyTorchZeroToAll] 8. PyTorch DataLoader 이번 시간에는 우리가 사용할 큰 데이터를 더 빠르게 로드하는 법에 대해 알아보도록 하겠다. 저번 시간에는 위와 같이 모든 데이터를 로드한 뒤에 각각을 ,로 구분해서 x_data와 y_data로 하나하나 구분했다. 훈련 단계에서도 모든 데이터들을 모델에 하나하나 모두 넣어서 예측값을 얻었다. 위의 예시에는 데이터가 700여개였기 때문에 크기가 작아서 모든 데이터를 하나하나 처리하기 어렵지 않았다. 하지만 만약 데이터의 크기가 매우 커지면 이런 식으로 하나하나 처리하기 어려워질 것이고 효율적이지 않다. 그래서 우리는 batch라는, 데이터를 일정한 크기로 묶어서 처리할 것이다. epoch, batch의 크기, 반복 횟수에 대한 정의는 위와 같다. epoch는 전체 데이터를 다루지만, batch는 일정한 크기.. 2020. 1. 27.