Почему model.losses возвращает потери регуляризации? - PullRequest
0 голосов
/ 21 июня 2019

Я встретил фрагмент кода Тензор потока 2.0, который используется для расчета потерь.Общая потеря состоит из двух частей: 1) потеря регуляризации, 2) потеря прогноза.Мой вопрос: почему model.losses это потеря регуляризации?model вот пример tf.keras.Model.Я немного сбит с толку официальной документацией tenorflow по API. tf.keras.Model , там написано

Потери, связанные с этим слоем.

При обращении к этому свойству создаются переменные тензоры регуляризации, поэтомубезопасен: доступ к потерям при tf.GradientTape будет распространять градиенты обратно к соответствующим переменным.

Почему мы можем получить потери регуляризации через доступ к свойству losses?Кроме того, что является безопасным?Если свойство losses возвращает потерю регуляризации, почему оно называется losses вместо regularization_loss?

with tf.GradientTape() as tape:
  outputs = model(images, training=True)
  regularization_loss = tf.reduce_sum(model.losses)
  pred_loss = ...
  total_loss = pred_loss + regularization_loss

1 Ответ

0 голосов
/ 21 июня 2019

Мы получаем потери регуляризации при доступе к свойству losses, поскольку эти потери создаются во время определения модели. Поскольку модель является моделью Keras, вы создали ее, используя слои Keras. Каждый слой Keras (Dense, Conv3D, ...) может быть упорядочен, и это свойство самого слоя.

Модель, представляющая собой упорядоченную коллекцию слоев, содержит все потери слоев внутри свойства losses.

Безопасный означает, что вы можете использовать свойство losses модели во время активного обучения, будучи уверенным, что градиент распространяется только на правильные слои. Например. если вы добавили регуляризацию l2 только на второй слой модели, то на переменные второго уровня влияет (и обновляется) этот срок потери.

Именуется losses вместо regularization_losses, поскольку не ограничивается только потерями при регуляризации; когда вы компилируете модель, к этому свойству добавляется потеря не-регуляризации

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