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")
🔸 모든 값을 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
🔸 신경망 구조
from keras import Sequential
from keras.layers import Dense
model = Sequential([
Dense(512,activation='relu'),
Dense(10,activation='softmax')
])
🔸 컴파일
model.compile(optimizer="rmsprop",
loss="sparse_categorical_crossentropy",
metrics='accuracy')
model.fit(train_images, train_labels, epochs=5, batch_size=128)
pred = model.predict(test_images)
pred[0].argmax()
loss, acc = model.evaluate(test_images, test_labels) # 디폴트 batch_size = 32
print(f'손실은 {loss} 이고 정확도는 {acc}입니다.')