관리 메뉴

ComputerVision Jack

[케라스 Chapter2 정리] 본문

DeepLearning/케라스 - Keras Lib

[케라스 Chapter2 정리]

JackYoon 2020. 1. 14. 23:53
반응형

MNIST 데이터셋 사용 케라스 간단한 신경망 제작하기.

실행 환경 : clab

 

from keras.datasets import mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# keras 내의 mnist 데이터셋 불러오기

데이터를 train set과 test set으로 나눈다.

 

[데이터 정보]

28 * 28 손글 씨 영상

영상 수 = 60000개

따라서 train.shape에 관한 정보는 (60000, 28, 28)이 된다. 

test.shape은 (10000, 28, 28)

 

from keras import models

from keras import layers

 

network = models.Sequential()

network.add(layers.Dense(512, activation = 'relu', input_shape(28 * 28)))

network.add(layers.Dense(10, activation = 'softmax'))

#model의 Sequence를 제작한다.

add()메소드를 통해 layer를 추가한다. layer.Dense(층, 활성화 함수, 입력 데이터 shape)

0~9까지 10개의 클래스이기 떄문에 마지막 출력은 10으로 맞추어준다.

그리고 softmax로 뽑아낸다.

두번째 layers의 입력shape은 전 층에서의 output이 알아서 매칭이된다.

 

network.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics = ['accuracy'])

# 컴파일 과정을 거친다.

손실 함수를 정의하고 최적화 과정을 통해 원하는 지표를 뽑아낸다.

국지적 최솟값을 찾아내야 한다.

 

[데이터 전처리]

train_images = train_images.reshape(60000, 28 * 28))

train_images = train_images.astype('float32') / 255

# 우선 (28, 28) shape을 (784, 1)로 shape을 변경한다.

그리고 float 자료형으로 데이터를 변환하고, 영상 밝기 값이 0~255로 존재하기 때문에 255로 나누어 준다.

test_images도 마찬가지로 변형

 

from keras.utils import to_categorical

train_labels = to_categorical(train_labels)

#라벨을 변경한다. 예를들어 5일경우 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0] 

 

network.fit(train_images, train_labels, epochs = 5, batch_size = 128)

#모델을 fit()메서드를 이용하여 학습을 시킨다.

배치 사이즈 128은 60000 / 128 = 469 이다

즉 1epoch에 469번을 학습한다. 따라서 5 epoch는 2345번이다.

 

test_loss, test_acc = network.evaluate(test_images, test_labels)

print('test_acc', test_acc)

#evaluate() 메서드를 실행하여 분리해놓은 test dataset을 사용하여 평가를 한다.

데이터 표현 텐서(tensor)

텐서 : 머신러닝의 기본요소 = 다차원 넘파이 배열

(데이터를 위한 컨테이너)

 

텐서 = 차원 + 축으로 이루어져 있다. (축 갯수 rank)

  • 스칼라 0D 텐서
  • 벡터 1D 텐서
  • 행렬 2D 텐서
  • 3D 텐서와 고차원 텐서

텐서의 크기변환 reshape과 transpose(전치 행렬)

 

[배치 데이터]

딥러닝 모델은 데이터를 작은 배치로 나누어 처리한다.

 

[브로드 캐스팅]

큰 텐서의 ndim에 맞도록 작은 텐서에(브로드캐스팅 축) 축이 추가된다.

작운 텐서가 새 축을 따라 큰 텐서 크기에 맞춘다.

02-케라스MNIST 데이터셋.ipynb
0.01MB

 

반응형

'DeepLearning > 케라스 - Keras Lib' 카테고리의 다른 글

[케라스 Chapter6 정리]  (0) 2020.02.11
[케라스 Chapter5 정리]  (0) 2020.01.31
[케라스 Chapter4 정리]  (0) 2020.01.28
[케라스 Chapter3 정리]  (0) 2020.01.15
[케라스 Chapter1 정리]  (0) 2020.01.14
Comments