На этом шаге мы рассмотрим возможность смешивания разных подходов.
Важно отметить, что выбор одного из описанных подходов к созданию моделей - с помощью класса Sequential, функционального API или путем создания подкласса класса Model - не препятствует использованию других подходов. Все модели в Keras API способны беспрепятственно взаимодействовать друг с другом, будь то модели Sequential, функциональные модели или подклассы класса Model, написанные с нуля. Все они являются частью общего спектра рабочих процессов.
Например, подкласс класса Layer или Model можно использовать в функциональной модели.
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)
И наоборот, функциональную модель можно применить в подклассе класса Layer или Model.
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()
На следующем шаге мы рассмотрим критерии выбора подходящего инструмента.