곰퓨타의 SW 이야기

Lab 10-2 Mnist CNN 본문

부스트캠프 영상을 참고하였다 :)

www.boostcourse.org/ai214/lecture/43765/?isDesc=false

 

파이토치로 시작하는 딥러닝 기초

부스트코스 무료 강의

www.boostcourse.org

 

 

딥러닝을 학습시키는 단계

(code 기준)

1. 라이브러리 가져오기 (torch, torchvision, matplotlib 등)

2. GPU 사용 설정하고 random value를 위한 seed 설정하기

3. 학습에 사용되는 parameter 설정하기 (learning_rate, training_epochs, batch_sizes, etc)

4. 데이터셋을 가져오고 (학습에 쓰기 편하게) loader 만들기

5. 학습 모델 만들기(class CNN(torch.nn.Module))

6. Loss function(Criterion)을 선택하고 최적화 도구 선택하기

7. 모델 학습 및 loss check(Criterion의 output)

8. 학습된 모델의 성능을 확인한다.

 

우리가 만들 CNN 구조 확인

 

import torch
import torch.nn as nn
# MNIST size
inputs = torch.Tensor(1,1,28,28)

conv1 = nn.Conv2d(1,32,3,padding=1)
pool = nn.MaxPool2d(2)
>>pool
# MaxPool2d(kernel_size = 2, stride = 2, padding = 0, dilation = 1, ceil_mode = False)

conv2 = nn.Conv2d(32,64,3,padding = 1)
>> conv2
# Conv2d(32,64,kernel_size = (3,3), stride = (1,1), padding = (1,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])

# out의 (n)번째 자리의 값을 리턴해줌
out.size(0)
# 1
out.size(1)
# 64

out = out.view(out.size(), -1)
>> out.shape
# torch.Size([1,3136])

# input : 3136  output : 10
fc = nn.Linear(3136,10)

out = fc(out)
>> out.shape
torch.Size([1,10])

 

 

MNIST에 CNN 적용 코드를 함께 작성

강의에서도 나오지만, 부스트코스 github에도 너무 잘 나와있기 때문에 아래 주소가 많이 도움될 것이다 !!

github.com/deeplearningzerotoall/PyTorch/blob/master/lab-10_1_mnist_cnn.ipynb

 

deeplearningzerotoall/PyTorch

Deep Learning Zero to All - Pytorch. Contribute to deeplearningzerotoall/PyTorch development by creating an account on GitHub.

github.com

 

Comments