Lec 07: MNIST
MNIST Introduction
Lec07 & Lec09-1
Boostcourse의 ‘파이토치로 시작하는 딥러닝 기초’를 통한 공부와 정리 Post
Goal of Study
- Mnist 데이터에 대해 알아본다.
Keyword
- MNIST
- torchvision
- Epoch
- Batch size
- Iteration
1. 강의 요약
What is MNIST?
손으로 쓰여진 숫자 0부터 9까지의 이미지로 구성된 Dataset이다.
이 데이터는 과거에 우체국에서 편지의 우편 번호를 인식하기 위해서 만들어진 훈련 데이터이다.
총 60,000개의 훈련 데이터와 레이블, 총 10,000개의 테스트 데이터와 레이블로 구성되어져 있으며,
레이블은 0부터 9까지 총 10개이다.
Example of MNIST
MNIST는 28x28 해상도의 이미지이고, gray scale이다.
이 문제를 풀기 위해 28x28의 해상도가 총 784픽셀 이므로, 각 이미지를 784개의 원소를 가진 벡터로 만들어줄 것이다.
이를 벡터로 만드는 코드를 살펴보면 다음과 같다.
for X, Y in data_loader:
# 입력 이미지를 [batch_size × 784]의 크기로 reshape
# 레이블은 원-핫 인코딩
X = X.view(-1, 28*28)
.view 함수를 통해 두번째 차원의 길이를 784크기로 변환해준다.
torchvision
torchvision은 유명한 데이터셋들, 이미 구현되어져 있는 유명한 모델들, 일반적인 이미지 전처리 도구들을 포함하고 있는 패키지이다.
자연어 처리를 위한 torchtext 패키지도 있다.
Learning Code
import torch
import torchvision.datasets as dsets
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
import torch.nn as nn
import matplotlib.pyplot as plt
import random
먼저 위의 라이브러리들을 import하는 과정에서 matplotlib가 없다는 에러가 떠서 먼저 아래와 같이 설정해주었다. pip install matplotlib
그러면 문제없이 import되는 것을 확인할 수 있다.
그리고 먼저 MNIST DataSet을 다음 링크에서 다운받아 경로를 지정해줘야한다.
그리고 Data를 다음과 같이 Reading한다.
위 같은 경우는 경로를 잘못지정해줘서, 데이터가 이미 있음에도 불구하고 download = True
구문에 따라 새로 데이터셋을 다운받고 있는 모습이다.
Result
최종 코드는 Pytorch로 시작하는 딥러닝 입문을 참고하여 직접 실행해보고 살펴보았다.
코드는 MyGitHub_MNIST에서 확인할 수 있다.
직접 실행해볼때 먼저 코드를 전체적으로 이해할 수 있는 것이 우선이라 생각한다.
MNIST 학습 코드와 Weight Initialization에 관한 자세한 포스팅은 다음 포스팅에서 다룬다.
📣
본 포스팅의 학습 환경 : Anaconda
, CPU
, Pytorch
, Jupyter Notebook
포스팅에서 오류나 궁금한 점은 Comments를 작성해주시면, 많은 도움이 됩니다.💡
Leave a comment