4. 여러 방식을 혼합하여 사용하기
- Sequential 모델, 함수형 API, Model 서브클래싱 패턴 중 하나를 선택한다고해서 다른 패턴의 사용이 제한되지 않는다.
- 일반적으로 함수형 API가 사용성과 유연성 사이에서 적절한 선택이다. 기능적으로 충분하다면 서브클래싱보다는 함수형 API를 사용하는 것이 좋다.
서브클래싱한 모델을 포함하는 함수형 모델의 예
from tensorflow import keras
from tensorflow.keras import layers
class Classifier(keras.Model):
def __init__(self, num_classes=2):
super().__init__()
if num_classes == 2:
num_units = 1
activation = "sigmoid"
else:
num_units = num_classes
activation = "softmax"
self.dense = layers.Dense(num_units, activation=activation)
def call(self, inputs):
return self.dense(inputs)
inputs = keras.Input(shape=(3,))
features = layers.Dense(64, activation="relu")(inputs)
outputs = Classifier(num_classes=10)(features)
model = keras.Model(inputs=inputs, outputs=outputs)
함수형 모델을 포함하는 서브클래싱 모델의 예
inputs = keras.Input(shape=(64,))
outputs = layers.Dense(1, activation="sigmoid")(inputs)
binary_classifier = keras.Model(inputs=inputs, outputs=outputs)
class MyModel(keras.Model):
def __init__(self, num_classes=2):
super().__init__()
self.dense = layers.Dense(64, activation="relu")
self.classifier = binary_classifier
def call(self, inputs):
features = self.dense(inputs)
return self.classifier(features)
model = MyModel()