본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. 인공지능과 딥러닝

[PyTorch로 시작하는 딥러닝 기초] Lab-10-2 Mnist CNN

by WE DONE IT. 2020. 3. 7.

edwith의 [파이토치로 시작하는 딥러닝 기초] Lab-10-2 Mnist CNN 강의를 정리했습니다. 잘못된 부분이 있으면 말씀해 주세요!

 

 

[LECTURE] Lab-10-2 Mnist CNN : edwith

학습목표 MNIST 데이터를 CNN으로 적용해본다.  핵심키워드 딥러닝 학습 단계 CNN - tkddyd

www.edwith.org


학습 단계 (코드 기준)

  1. 라이브러리 가져오고 (torch, torchvision, matplotlib 같은것들)

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

  3. 학습에 사용되는 parameter 설정!(learning_rate, training_epochs, batch_size, etc)

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

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

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

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

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


직접 실습할 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에서 확인하실 수 있습니다.

 

deeplearningzerotoall/PyTorch

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

github.com

 

파라미터 수와 레이어별  input / output 크기 개념은 <TAEWAN.KIM 블로그>에도 잘 설명되어 있습니다. 

 

CNN, Convolutional Neural Network 요약

Convolutional Neural Network, CNN을 정리합니다.

taewan.kim

 

댓글