Replicated

Keras CNN - MNIST 본문

학부/딥러닝

Keras CNN - MNIST

라구넹 2025. 10. 25. 22:00
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Input
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.utils import to_categorical
import numpy as np
import matplotlib.pyplot as plt

img_rows=28
img_cols=28

(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train, X_test = X_train / 255.0, X_test / 255.0

X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)
X_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

seed = 100
np.random.seed(seed)
num_classes = 10

데이터 준비

CNN은 채널이 끼어드니 행, 열, 채널 수까지 해줘야 함

 

def cnn_model():
    model = Sequential()
    model.add(Input(shape=(img_rows, img_cols, 1)))
    model.add(Convolution2D(32, kernel_size=(5, 5),
        padding='valid', # or 'same'
        strides=(1, 1),
        activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(127, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))

    model.compile(loss='categorical_crossentropy',
        optimizer='adam',
        metrics=['accuracy'])

    return model

모델 생성, 컴파일

 

model = cnn_model()
model.summary()

disp = model.fit(X_train, y_train,
    validation_data=(X_test, y_test),
    epochs=10,
    batch_size=200,
    verbose=1)

scores = model.evaluate(X_test, y_test, verbose=0)
print("loss: %.2f" % scores[0])
print("acc: %.2f" % scores[1])

모델 학습

모델 요약

 

결과

 

plt.plot(disp.history['accuracy'])
plt.plot(disp.history['val_accuracy'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()

시각화

'학부 > 딥러닝' 카테고리의 다른 글

전이 학습 (Transfer Learning)  (0) 2025.12.07
Keras CNN - Argumentation  (0) 2025.10.25
Keras CNN  (0) 2025.10.25
Keras - MNIST  (0) 2025.10.25
Keras 개요  (0) 2025.10.18