카테고리 없음
[Deep Learning 6] Functional API 활용 , Model 클래스 상속, Sequential 함수 활용 생성 실습
ParkS2
2024. 4. 11. 00:46
Functional API , Model 클래스 상속, Sequential 은 딥러닝을 모델링하는 대표적인 3가지 방법이다.
1. Functional API 사용 예시
Functional API를 사용하면 입력과 출력이 명시적이며, 다중 입력 및 출력을 가진 복잡한 모델을 구성할 수 있다.
import tensorflow as tf
inputs = tf.keras.Input(shape=(32, 32, 3))
x = tf.keras.layers.Flatten()(inputs)
x = tf.keras.layers.Dense(128, activation='relu')(x)
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.summary()
2. Model 클래스 상속 사용 예시
Model 클래스를 상속받아 사용자 정의 모델을 만들 때는 더 많은 컨트롤이 가능하며, 복잡한 모델 동작을 내부에 구현할 수 있다.
import tensorflow as tf
class CustomModel(tf.keras.Model):
def __init__(self):
super(CustomModel, self).__init__()
self.flatten = tf.keras.layers.Flatten(input_shape=(32, 32, 3))
self.dense1 = tf.keras.layers.Dense(128, activation='relu')
self.dense2 = tf.keras.layers.Dense(10, activation='softmax')
def call(self, inputs):
x = self.flatten(inputs)
x = self.dense1(x)
return self.dense2(x)
model = CustomModel()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.summary()
3. Sequential 모델 사용 예시
Sequential 모델은 레이어를 순서대로 쌓아 올리는 방식으로, 가장 직관적이고 간단한 모델 정의 방식이다.
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(32, 32, 3)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.summary()
각 방법은 특정 상황과 선호도에 따라 선택할 수 있으며, 모델의 복잡성, 구현의 용이성, 그리고 개발자의 필요에 따라 달라질 수 있다.