Итак, я могу создать свою модель, создав подклассы слоев и моделей Keras, например:
class CNN(tf.keras.models.Model):
def __init__(self, **kwargs):
super(CNN, self).__init__(**kwargs)
self.l1 = tf.keras.layers.Conv2D(64, (4, 4), padding='same')
self.l2 = tf.keras.layers.Dense(10, activation='softmax')
def call(self, ip):
x = self.l1(ip)
op = self.l2(x)
return op
Чем это отличается от
mymodel = Model(input = inputs, output= outputs)
Я имею в виду, я знаю некоторые различия, как и в приведенной выше модели, имеет атрибут mymodel.input, но когда я запрашиваю этот атрибут для модели, определенной с помощью подклассов, он выдает эту ошибку:
AttributeError: Слой cnn не подключен, нет входных данных для возврата.
это только одно различие, так что же отличает их и как выделить первую модель, чтобы все атрибуты модели были определены классическим способом?Точнее, как в названии: в чем разница между кучей сложенных слоев и моделью?