AI 인공지능/딥러닝 Practices
07.31 CLASS SUMMARY (mnist ②)
dngus_tak
2021. 8. 1. 00:37
지난 번 mnist의 기본적인 모델을 만들었으나, 상당히 정확도가 떨어졌다.
그래서 정규화 및 오차함수를 설정해 최대한 손글씨에 근접하게 인식하도록 구체화시켰다.
x_train, x_test = x_train / 255.0 , x_test / 255.0
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense, Dropout
model = Sequential([
Flatten(input_shape=(28,28)),
Dense(128, activation='relu'),
Dense(128, activation='relu'),
Dropout(0.2),
Dense(10,activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
pred = model.predict(x_test)
plt.imshow(x_test[3])
plt.show()
print(np.argmax(pred[3]))
그 결과, 다음이 도출되었다.
그러나 프로그램이 틀린 예측을 했을 경우, 실제와 오차를 모두 표기하기 위해 다음을 추가하면,
for i, p in enumerate(pred):
result = np.argmax(p)
if result != y_test[i]: #예측이 틀리면
plt.imshow(x_test[i])
plt.show()
print('actual(실재값):',y_test[i],'predict(예측값):',result)
이렇게 실제값과 오차값을 동시에 표기해준다.