728x90
반응형
[1] MNIST 데이터 불러오기 및 정규화
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPool2D
from tensorflow.keras.layers import Flatten, Dense, Dropout
(x_train, y_train) (x_test, y_test) = mnist.load_data() # 데이터 불러오기
x_train = x_train.reshape(-1, 28, 28, 1) # 텐서로 변환
x_test = x_test.reshape(-1, 28, 28, 1) # 텐서로 변환
print(x_train.shape, x_test.shape)
print(y_train.shape, y_test.shape)
x_train = x_train.astype(np.float32) / 255.0 # 정규화
x_test = x_test.astype(np.float32) / 255.0 # 정규화
[2] CNN 모델 구축
cnn = Sequential()
cnn.add(Conv2D(input_shape(28, 28, 1), kernel_size = (3, 3), filters = 32, activation = 'relu'))
cnn.add(Conv2D(kernel_size = (3, 3), filters = 64, activation = 'relu'))
cnn.add(MaxPool2D(pool_size = (2, 2)))
cnn.add(Dropout(0.25)) # Overfitting qkdwl
cnn.add(Flatten()) # 3차원 텐서를 1차원 벡터로 변환
cnn.add(Dense(128, activation = 'relu')) # 은닉층 개념
cnn.add(Cropout(0.5))
cnn.add(Dense(10, activation = 'softmax')) # 출력층
[3] CNN 모델 컴파일 및 학습
cnn.compile(loss='sparse_categorical_crossentropy', optimizer = tf.keras.optimizers.Adam(), metrics = ['accuracy'])
hist = cnn.fit(x_train, y_train, batch_size = 128, epochs = 30, validation_data = (x_test, y_test))
[4] 모델 (정확도) 평가
cnn.evaluate(x_test, y_test)
[5] 정확도 및 손실
import matplotlib.pyplot as plt
plt.plot(hist.history['accuracy'])
plt.plot(hist.history['val_accuracy'])
plt.title('Accuracy Trend')
plt.xlabel('epoch')
plt.ylabel('accuracy')
plt.legend(['train', 'validation'], loc = 'best')
plt.grid()
plt.show()
plt.plot(hist.history['loss'])
plt.plot(hist.history['val_loss'])
plt.title('Lostt Trend')
plt.xlabel('epoch')
plt.ylabel('loss')
plt.legend(['train', 'validation'], loc='best')
plt.grid()
plt.show()
반응형
'IT > 머신러닝공부' 카테고리의 다른 글
CNN 성능향상 방법 4가지 (0) | 2022.12.29 |
---|---|
CIFAR-10 스트립트 예제 (0) | 2022.12.29 |
CNN-Convolution Neural Network (합성곱 신경망)간단 정리 (0) | 2022.12.27 |
Fashion MNIST 딥러닝 스크립트 예제 (0) | 2022.12.26 |
MNIST를 활용한 이미지 데이터 딥러닝 개발 프로세스2 (0) | 2022.12.25 |