티스토리 친구하기

본문 바로가기

딥러닝/Your own dataset

mnist your own dataset

728x90

Update

2019.7.15: Posting

 

Introduction

  보통 딥러닝의 이론적 영역을 공부하고 나서 가장 많이, 그리고 가장 처음 해보는 예제는 MNIST(Modified National Institute of Standards and Technology) 데이터베이스, 즉 손으로 쓴 숫자들을 Classification(분류)하는 문제일 것이다. MNIST dataset을 Classification하는 코드는 Github 또는 시중에 판매되는 교재에서 쉽게 찾을 수 있으며, 분류하려는 MNIST dataset 또한 아래와 같이 2줄의 코드로 쉽게 다운로드 할 수 있다. 

 

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("./mnist/data/", one_hot=True)

 

우리는 위의 코드를 통해 잘 정리된 MNIST dataset을 다운로드하여 그 동안 이론적으로 배웠던 DNN(Deep Neural Network)와 CNN(Convolutional Neural Network)의 graph를 디자인하고, model을 learning(학습)하여 loss도 줄여보고, 학습된 모델을 기반으로 testset을 활용하여 모델이 얼마나 잘 학습이 되었는지 inference(추론)해 볼수도 있을 것이다. 이러한 일련의 과정들을 모두 거친후에, 사람들은 이제 자신이 가지고 있는 문제를 딥러닝을 이용해 해결해 보려고 한다.

  자!! 이제 우리의 데이터를 Classification하는 문제를 풀어보자!! 

흠..우리의 데이터는 어디(어느 디렉토리 또는 폴더)에 두어야 하지? 데이터는 어떻게 불러오지? 우리의 데이터와 ground true는 어떻게 매칭시키지? 배치사이즈로 데이터를 학습시키면 좋다는데 불러온 파일을 임의로 자르면 되나?

  우리가 이론적으로 배운 것을 쉽고 빠르게 적용해 보기 위해 위의 코드에서처럼 단 2줄로 학습 및 테스트할 데이터를 정리해 주는 것은 굉장히 편리한 일이다. 하지만 실제로 나의 데이터를 딥러닝에 적용하기 위해서는 dataset도 지정된 디렉토리에 미리 정리해야하고, 데이터를 불러와야 할 뿐만 아니라 내가 학습시키고자 하는 데이터의 batch size도 마음대로 조정할 수 있어야 한다. 나의 데이터를 이용해 딥러닝 알고리즘을 적용하려면, 데이터들을 학습에 사용할 수 있는 형태가 되도록 다음과 같은 순서로 데이터들을 정리할 필요가 있다.

 

  1. 학습할 데이터를 폴더에 저장하기
  2. 데이터를 코드로 불러오기 (데이터 목록 또는 .csv 파일 불러오기) 
  3. 학습데이터와 라벨링 매칭하기
  4. Shuffle 로 데이터를 골고루 섞기
  5. 배치사이즈로 데이터를 잘라서 모델에 넣을 준비 하기

이제부터는 위의 순서대로 하나하나씩 정리해 나가면서, 내가 가지고 있는 데이터를 딥러닝 알고리즘에 적용하여 해결하려고 할 때 발생하는 기술적인 어려움들을 함께 해쳐나가 보도록 하자!!

 

덧)

  • 이론적인 설명은 계속 포스팅하여 이어나가도록 하겠습니다.
  • 작성한 코드는 조만간 Github에 올려 공유할 예정입니다. 포스팅마다 링크를 걸어놓을 예정이니 참고 바랍니다.
  • 잘못된 점이 있으면 조언 부탁드립니다.

 

반응형