edwith의 [파이토치로 시작하는 딥러닝 기초] Lab-10-2 Mnist CNN 강의를 정리했습니다. 잘못된 부분이 있으면 말씀해 주세요!
학습 단계 (코드 기준)
-
라이브러리 가져오고 (torch, torchvision, matplotlib 같은것들)
-
GPU 사용 설정 하고 random value를 위한 seed 설정!
-
학습에 사용되는 parameter 설정!(learning_rate, training_epochs, batch_size, etc)
-
데이터셋을 가져오고 (학습에 쓰기 편하게) loader 만들기
-
학습 모델 만들기( class CNN(torch.nn.Module) )
-
Loss function (Criterion)을 선택하고 최적화 도구 선택(optimizer)
-
모델 학습 및 loss check(Criterion의 output)
-
학습된 모델의 성능을 확인한다.
직접 실습할 CNN 구조
CNN 구조 확인하기
import torch
import torch.nn as nn
inputs = torch.Tensor(1, 1, 28, 28) //batch size, channel, height, width
inputs.shape
>> torch.Size([1, 1, 28, 28])
conv1 = nn.Conv2(1, 32, 3, padding = 1)
pool = nn.MaxPool2d(2)
>> MaxPool2d(kernel_size=2, padding=0, dilation=1,ceil_mode=False)
conv2 = nn.Conv2d(32, 64, 3, padding=1)
out = conv1(inputs)
out.shape
>> torch.Size([1, 32, 28, 28])
out = pool(out)
out.shape
>> torch.Size([1, 32, 14, 14])
out = conv2(out)
out.shape
>> torch.Size([1, 64, 14, 14])
out = pool(out)
out.shape
>> torch.Size([1, 64, 7, 7])
view 확인하기
out.size(0)
>> 1
out.size(1)
>> 64
out.size(2)
>> 7
out.size(3)
>> 7
out = out.view(out_size(0), -1)
out.shape
>> torch.Size([1, 3136])
fc = nn.Linear(3136, 10)
out = fc(out)
out.shape
>> torch.Size([1, 10]) //Batch size에 맞게 10개 나옴
주피터 노트북에서 구현한 코드는 <모두를 위한 딥러닝 시즌2>의 Github에서 확인하실 수 있습니다.
파라미터 수와 레이어별 input / output 크기 개념은 <TAEWAN.KIM 블로그>에도 잘 설명되어 있습니다.
'20. 인공지능과 딥러닝' 카테고리의 다른 글
[PyTorch로 시작하는 딥러닝 기초] Lab 11-0 RNN intro (0) | 2020.03.29 |
---|---|
[PyTorch로 시작하는 딥러닝 기초] Lab-10-3 visdom (0) | 2020.03.08 |
[PyTorch로 시작하는 딥러닝 기초] Lab-10-1 Convolution (2) | 2020.03.07 |
[PyTorch로 시작하는 딥러닝 기초] 09-4 Batch-Normalization (0) | 2020.02.09 |
[PyTorch로 시작하는 딥러닝 기초] 08. Perceptron (0) | 2020.02.08 |
댓글