Керас: разница между слоем и моделью, или когда реализовать слой? - PullRequest
2 голосов
/ 10 мая 2019

Я смотрю расширенный учебник Keras на веб-сайте tenorflow , и я немного озадачен реализацией внимания Богданау:

class BahdanauAttention(tf.keras.Model):
  ...

Так что, похоже, они реализуют это как Model. Однако сама по себе это не полная полезная модель - это просто часть большего Model (декодер в данном случае), который оптимизируется. Это используется позже как

attention_layer = BahdanauAttention(10)

, который подчеркивает тот факт, что он может рассматриваться как просто слой Model.

На самом деле, если понять, что модель может быть повторно использована как часть другой модели, граница между Model и Layer становится немного размытой.

Итак, мои вопросы,

  1. В чем разница между Layer и Model в Керасе и

  2. Когда уместно реализовать слой как Layer, в отличие от того, чтобы всегда реализовывать новый слой как Model.

1 Ответ

0 голосов
/ 10 мая 2019

Я думаю, вы немного смущены. Функционально слой и модель совершенно разные, и я не понимаю, зачем вам их сравнивать. Другими словами, модель обычно представляет собой набор слоев. Это ваша ответственность, чтобы добавить их в модель и подключить их. Они могут быть связаны различными и запутанными способами. Конечно, вы можете создать модель, которая имеет только один слой, но это зависит от того, для чего вы ее используете.

Что касается вашего второго вопроса, на самом деле нет указания, когда что делать. Обычно вы пытаетесь исчерпать все варианты, пока не найдете то, что работает лучше всего. Цепочка моделей и совместное использование слоев между моделями может стать определяющим фактором при принятии решения, хотите ли вы просто простой слой или подключите его к модели.

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