손글씨 예제 - 이미지 분류 예제
사람이 0-9까지 쓴 손글씨 숫자 이미지를 각 클래스로 분류
import pandas as pd
import tensorflow as tf
# 학습, 시험 데이터셋으로 나누고 픽셀값 정규화
mnist = tf.keras.datasets.mnist
# .load_data()통해 각 형태에 맞게 데이터 불러오기
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 이미지 정규화
# 이미지 데이터는 색의 명암을 0-255 사이으이 숫자로 표현
# 데이터가 0-255사이의 숫자로 구성되어있으니, 0-1 사이의 숫자로 정규화 해준다
x_train, x_test =x_train/255.0 ,x_test/255.0
# 데이터 레이블 구성 형태보기
pd.unique(y_train)
# 신경망 구축- 1개의 은닉층, 1개의 출력층
model =tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28))) #input
model.add(tf.keras.layers.Dense(100, activation='relu')) #hidden
model.add(tf.keras.layers.Dense(10, activation='softmax'))
model.compile(optimezer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochas=5)
# 학습한 신경망 모델 사용해 평가
model.evaluate(x_test, y_test, verbose=2)
문제
손글씨 MNIST 예제코드에서
1. 입력층의 노드 수는 몇 개? ( 입력 데이터의 특성 수)
2. Flatten은 무슨 역할 ?
3. 마지막 Dense층의 숫자는 왜 10?
4. 마지막 Dense 층의 activation은 왜 softmax로 해주었나
1. 28*28=784개
2. 평평하게 만들어 줌 = 한 줄로 펴줌 28*28이아니라 1*784로 만들어줌
3. 출력층의 숫자 0부터 9까지를 분류해야하기때문에 10로 설정
4. 0-9까지의 확률을 판단해서 0-1사이의 확률로 출력해줌
'데이터 분석 및 프로젝트 > 딥러닝' 카테고리의 다른 글
딥러닝 -신경망 용어 (0) | 2023.04.24 |
---|---|
딥러닝 3일차 - 학습률 (0) | 2023.04.23 |
딥러닝 2일차 - tensorflow 신경망 예제 (0) | 2023.04.23 |
딥러닝 2일차 - 신경망 학습 (0) | 2023.04.23 |
딥러닝 1일차 (0) | 2023.04.22 |