728x90
# 라이브러리 임포트
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Flatten
model = Sequential()
model.add( Flatten()) # 알아서 이미지 사이즈 계산해서, 인풋레이어 만들어 준다.
# 히든 레이어 1개
model.add( Dense(units= 128, activation='relu'))
# 아웃풋 레이어 셋팅
# 아웃풋 레이어는, 10개로 분류하는 문제이므로,
# 노드 10개를 셋팅하고, 액티베이션 함수에는 소프트맥스(softmax)를 설정한다.
model.add( Dense(units=10, activation='softmax'
- 이미지의 가로 세로를 전부 일렬로 만드는 작업이 flatten
|
# 컴파일할때, 옵티마이저와 로스를 설정하는데,
# 2개로 분류할때의 loss 는 binary_crossentropy 를 사용 했다.
# 3개 이상으로 분류하는 경우
# y 값이 어떻게 들어있는지 확인한 후
# 1. y 값이 0,1,2,3.... 이런식으로 레이블 인코딩으로 되어있는 경우는
# spares_categorical_crossentropy 를 사용하고
# 2. y 값이 원핫인코딩으로 들어있는 경우는
# categorical_crossentropy 를 사용한다.
y_train # y 값 확인
# 출력
array([9, 0, 0, ..., 3, 0, 5], dtype=uint8) # 레이블 인코딩
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']
model.fit(X_train, y_train, epochs=5) #학습
# 출력
Epoch 1/5
1875/1875 [==============================] - 7s 3ms/step - loss: 0.5017 - accuracy: 0.8248
Epoch 2/5
1875/1875 [==============================] - 5s 3ms/step - loss: 0.3741 - accuracy: 0.8654
Epoch 3/5
1875/1875 [==============================] - 5s 3ms/step - loss: 0.3358 - accuracy: 0.8771
Epoch 4/5
1875/1875 [==============================] - 5s 3ms/step - loss: 0.3156 - accuracy: 0.8840
Epoch 5/5
1875/1875 [==============================] - 5s 3ms/step - loss: 0.2960 - accuracy: 0.8900
<keras.callbacks.History at 0x7f0af6daf7d0>
model.evaluate(X_test, y_test) # 정확도
# 출력
313/313 [==============================] - 1s 3ms/step - loss: 0.3485 - accuracy: 0.8740
[0.34848690032958984, 0.8740000128746033]
'Python' 카테고리의 다른 글
이미지 파일 (JPG, PNG..)을 학습을 위해 넘파이 데이터로 만드는 방법(ImageDataGenerator) (0) | 2021.12.02 |
---|---|
실제값은 레이블 인코딩이고, 예측값은 소프트맥스로 나왔을때, 컨퓨전 매트릭스 만드는 방법 (0) | 2021.12.01 |
이미지를 피처 스케일링 하는 방법 (0) | 2021.12.01 |
이미지의 행렬, Gray Scale Image. Color Image (0) | 2021.12.01 |
텐서플로우의 리그레션 문제 모델링 하는 코드 (0) | 2021.11.30 |