-
CNN Model 만들어 보기Keras 2017. 12. 30. 12:18
그림판을 이용하여 직접 만든 이미지를 분류하는 과정을 다루면 다음과 같다. 저자가 제공한 circle 20개, retangle20개, triangle 20개 png에 내가 추가로 만든 circle 20개, retangle 20개, triangle 20개를 사용하였다.
train이라는 폴더에 circle, retangle, triangle 폴더를 만들고, 각각의 폴더에 30개의 png 그래프를 저장하고,
test라는 폴더에도 circle, retangle, triangle 폴더를 만들고, 각각의 폴더에 10개의 png 그래프를 저장하였다.import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
from keras.preprocessing.image import ImageDataGenerator
from keras.utils.vis_utils import model_to_dot
from IPython.display import SVG%matplotlib inline
# 1. 데이터 생성하기
train_datagen = ImageDataGenerator(rescale = 1.0 / 255)
train_generator = train_datagen.flow_from_directory(directory = "c:/keras/train/",
target_size = (24, 24),
batch_size = 3,
class_mode = "categorical")test_datagen = ImageDataGenerator(rescale = 1.0 / 255)
test_generator = test_datagen.flow_from_directory(directory = "c:/keras/test/",
target_size = (24, 24),
batch_size = 3,
class_mode = "categorical")# 2. 모델 구성하기
model = Sequential()
model.add(Conv2D(32, kernel_size = (3, 3), activation = "relu", input_shape = (24, 24, 3)))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Flatten())
model.add(Dense(128, activation = "relu"))
model.add(Dense(3, activation = "softmax"))# 3. 모델 학습과정 설정하기
model.compile(loss = "categorical_crossentropy", optimizer = "adam", metrics = ["accuracy"])# 4. 모델 학습시키기
model.fit_generator(train_generator, steps_per_epoch = 15, epochs = 50, validation_data = test_generator, validation_steps = 5)# 5. 모델 평가하기
print("-- Evaluate --")
scores = model.evaluate_generator(test_generator, steps = 5)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))# 6. 모델 사용하기
print("-- Predict --")
output = model.predict_generator(test_generator, steps = 5)
np.set_printoptions(formatter = {"float":lambda x: "{0:0.3f}".format(x)})
print(test_generator.class_indices)
print(output)[출처] 블록과 함께하는 파이썬 딥러닝 케라스, 김태영 지음, DigitalBooks, p125~134
'Keras' 카테고리의 다른 글
수치입력 이진분류모델 레시피 (퍼셉트론 신경망 모델) (0) 2018.01.01 데이터 부풀리기 (0) 2017.12.30 CNN(Convolution Neural Network) Layer 이야기 (0) 2017.12.29 다층 퍼셉트론 신경망 모델 만들어보기 (0) 2017.12.28 Optimizers List (0) 2017.12.26