딥러닝_딥러닝기초_3. 신경망의 첫 예제: MNIST

주지윤·2022년 11월 28일
0

딥러닝

목록 보기
4/21
post-custom-banner

딥러닝 첫번째 예제: MNIST살펴보기

1. 데이터셋 로드

from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

🔸 데이터 shape

print(train_images.shape)
print(test_images.shape)

(60000, 28, 28)
(10000, 28, 28) # --- (samples, height, width)

🔸 데이터 살피기, 이미지화

np.set_printoptions(linewidth = 28*28)
print(train_images[0])

plt.imshow(train_images[0], cmap="gray")


2. 데이터 준비하기

🔸 모든 값을 0,1 사이의 값으로 스케일링

# 2차원 변형( 한 줄 세우기 )
train_images = train_images.reshape((60000, 28*28))
test_images = test_images.reshape((10000, 28*28))

# 숫자를 0과 1사이의 float 형태로 바꿔줌
# 255로 나누는 이유 = 이미지의 경우 픽셀의 최댓값인 255로 나눔
train_images = train_images / 255.0
test_images = test_images / 255.0

3. 신경망 구조와 컴파일

🔸 신경망 구조

from keras import Sequential
from keras.layers import Dense

model = Sequential([
	Dense(512,activation='relu'),
    Dense(10,activation='softmax')
])
  • Dense = Densely connected 층을 구성
  • 마지막 Dense는 출력 값을 표현, 총 0~9까지 10개의 숫자중 하나가 출력
  • softmax: 출력 값이 여러개일 때 사용하는 함수(sigmoid는 이진분류일때)

🔸 컴파일

model.compile(optimizer="rmsprop",
              loss="sparse_categorical_crossentropy",
              metrics='accuracy')
  • optimizer: 성능 향상을 위해 모델을 업데이트 하는 메커니즘
  • loss: 손실함수로, 모델의 성능을 측정하는 방법
  • metrics: 훈련과 데스트 과정을 모니터링할 지표, 분류모델에서는 보통 'accuracy'

4. 모델 훈련하기

model.fit(train_images, train_labels, epochs=5, batch_size=128)
  • epochs: 몇 번 반복하여 훈련할 것인지
  • batch_size: 한 번에 전체 데이터 셋을 가져가지 않고, 분할하여 훈련(여기서는 128개로 나눈다)

5. 모델 예측하기

pred = model.predict(test_images)
pred[0].argmax()

  • 10개의 값중 가장 큰값이 최종 예측값이 된다.(여기서는 7)
  • 정답 역시 7

6. 정확도 확인 evaluate

loss, acc = model.evaluate(test_images, test_labels) # 디폴트 batch_size = 32
print(f'손실은 {loss} 이고 정확도는 {acc}입니다.')



post-custom-banner

0개의 댓글