본문 바로가기
인공지능/Deep Learning

[Deep Learning] CNN TensorFlow 이미지 분류하는 딥러닝 해보기

by coding_su 2022. 12. 30.

📝딥러닝 CNN 텐서플로우 이미지를 분류하는 딥러닝 해보기

기존에 DNN으로 해봤던 이미지 분류를 CNN을 이용해 분류해봤다

(https://coding-jisu.tistory.com/158)

import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Flatten

# 데이터 가져와서 학습용과 테스트용으로 분리
fashion_mnist = tf.keras.datasets.fashion_mnist
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

# CNN을 이용할것이기 때문에 4차원으로 변경(학습용과 테스트용 둘 다 변경)
X_train.shape # 결과값은 (60000, 28, 28, 1)
X_train = X_train.reshape(60000, 28, 28, 1)
X_test.shape # 결과값은 (10000, 28, 28)
X_test = X_test.reshape(10000, 28, 28, 1)

 

모델링후 학습/테스트

from keras.layers import Conv2D, MaxPooling2D

# 모델링
def build_model() :
  model = Sequential()
  model.add( Conv2D( filters= 64, kernel_size= (3,3), activation='relu', input_shape= (28, 28, 1) ) )
  model.add( MaxPooling2D( pool_size= (2, 2), strides= 2 ) ) # 2칸씩 이동해야 겹치지 않기때문에 스트라이드 2로 설정
  model.add( Conv2D( filters= 32, kernel_size= (2,2), activation='relu' ) )
  model.add( MaxPooling2D( pool_size= (2, 2), strides= 2 ) )

  model.add( Flatten() )
  model.add( Dense( units= 128, activation='relu' ) )
  model.add( Dense( units= 10, activation='softmax' ) )
                                  # loss= y의 값을 확인하여 작성
  model.compile( optimizer= 'adam', loss= 'sparse_categorical_crossentropy', metrics= [ 'accuracy' ])
  
  return model
  
  # 학습/테스트
  epoch_history = model.fit(X_train, y_train, epochs= 5, validation_split= 0.2)
  model.evaluate(X_test, y_test)

 

model.summary() 해서 확인해보면 CNN 파라미터는 필터 행렬 안에 들어가는 숫자이다

 

댓글