
CNN으로 MNIST 필기체 숫자 인식
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))
# 픽셀값 정규화
train_images = train_images / 255.0
test_images = test_images / 255.0
# 모델 구축
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2,2))) # Non-Overlapping MaxPooling
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D(2,2)) # Non-Overlapping MaxPooling
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
#평탄화
model.add(layers.Flatten())
model.add(layers.Dense(64, activation = 'relu'))
model.add(layers.Dense(10, activation = 'softmax'))
# 모델 컴파일
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images,
train_labels,
epochs=5,
validation_data = (test_images, test_labels)
)
# 모델 요약
model.summary()


정확도가 99%가 넘게 나온다..!
CNN 진짜 대박.. 지금까지 모델들이랑 비교가 안되게 좋은 것같다.
역시 이미지 처리에 주로 사용된다고 하는 이유가 있었다ㅜㅜ 최고!👍