[텐서플로우] CNN 구현

텐서플로우 로 CNN 을 구현합니다.

CNN 을 이용한 학습

  • DNN 보다 효율적으로 학습
  • 모든 픽셀을 다 보지 않고, 필터를 이용해 중요한 부분에 집중
  • convolution(필터링) + pooling(압축)

cnn

데이터 가져오기 및 정규화

import tensorflow as tf
import numpy as np

mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()

training_images = training_images.reshape(60000, 28, 28, 1)
test_images = test_images.reshape(10000, 28, 28, 1)

training_images = training_images / 255.0
test_images = test_images / 255.0

모델 만들기

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])
  • convolution: 첫번째 Conv2D 레이어는 3 by 3 짜리 32개의 필터에, 입력값은 28 by 28. 흑백이기 때문에 마지막에 color depth 로 1이 들어감
  • pooling: MaxPooling 은 필터중에 가장 큰 값을 선택

컴파일 및 학습

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

model.fit(training_images, training_labels, epochs=10)

model.evaluate(test_images, test_labels)

© 2021. All rights reserved.

Powered by Hydejack v9.1.4