В чем разница между моделью и набором слоев в TF 2.0? - PullRequest
1 голос
/ 15 июня 2019

Итак, я могу создать свою модель, создав подклассы слоев и моделей 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 не подключен, нет входных данных для возврата.

это только одно различие, так что же отличает их и как выделить первую модель, чтобы все атрибуты модели были определены классическим способом?Точнее, как в названии: в чем разница между кучей сложенных слоев и моделью?

1 Ответ

1 голос
/ 15 июня 2019

С точки зрения программного обеспечения Model - это уникальный класс Python, также как и различные уровни (https://www.tensorflow.org/api_docs/python/tf/keras/models/Model из документации TF 1.13). Как и для любого класса Python, существуют уникальные методы, так же как и для Model.

Как класс Model интегрирует различные слои логически в исходном коде класса Model, который находится в https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/python/keras/engine/training.py (для TF 1.13 исходный код для TF 2.0 очень скорее всего похоже, чтобы легче было искать class Model с Ctrl + F в файле)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...