케라스로 모델 구현하기

Joonlaxy·2023년 5월 11일
0

사용 버전

Tensorflow 2.11.1 버전을 도커 허브에서 다운로드 받아 진행하였다.

Tensorflow v2에서 케라스를 활용하여 모델을 구현할 것이다.

class CustomModel(keras.Model):
    
    # 클래스 초기
    def __init__(self):
        super(CustomModel, self).__inin__()
        self.__정의하고자 하는 레이어__()
        
    # 순전파(Forward propagtion) 구현
    def call(self, x):
        x = self.__정의하고자 하는 레이어__(x)
        x = self.__정의하고자 하는 레이어__(x)
        
        return x

Sequential API 활용

MNIST 문제를 구하고 해결할 것이다.

이러한 구조의 레이어를 쌓기 위해서는 아래와 같은 노고가 필요하다.

필요 라이브러리 호출

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

데이터 구성

mnist = keras.datasets.mnist
(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 = tf.expand_dims(x_train, axis = 3)
x_test = tf.expand_dims(x_test, axis = 3)

x_train.shape을 하게되면 (60000, 28, 28, 1) 형태를 갖는다. 전체 train 데이터는 60,000 개이고 가로 28, 세로28의 흑백(1)인 이미지 데이터임을 확인할 수 있다.


모델 쌓기

앞 이미지처럼 모델을 쌓아보자

model = keras.Sequential()
model.add(keras.Input(shape=x_train.shape[1:]))
model.add(Conv2D(filters = 32, kernel_size = 3, activation = 'relu', name = 'conv2d'))
model.add(Conv2D(filters = 64, kernel_size = 3, activation = 'relu', name = 'conv2d_1'))
model.add(Flatten())
model.add(Dense(128, activation = 'relu', name = 'dense'))
model.add(Dense(10, activation = 'softmax', name = 'dense_1'))

model.summary()


모델 학습하기

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

model.fit(x_train, y_train, epochs=2)

model.evaluate(x_test,  y_test, verbose=2)

profile
Come in here

0개의 댓글