РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
261 of 824 menu

Метод add_loss класса Layer

Метод add_loss класса Layer добавляет лосс (дополнительную функцию потерь) к слою. Добавленные лоссы накапливаются в атрибуте losses слоя и учитываются при обучении модели. Первым параметром метод принимает значение лосса в виде тензора или вызываемого объекта, возвращающего тензор. Вторым необязательным параметром можно передать условие, при котором лосс должен применяться.

Синтаксис

layer.add_loss(loss, [conditional])

Пример

Давайте создадим слой и добавим к нему постоянный лосс:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Dense(3) layer.add_loss(tf.reduce_sum(tf.constant([1.0, 2.0, 3.0]))) print(layer.losses)

Результат выполнения кода:

[<tf.Tensor: shape=(), dtype=float32, numpy=6.0>]

Пример

Давайте добавим лосс, зависящий от входных данных слоя:

<+python+> import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.Dense(3) inputs = tf.constant([[1.0, 2.0, 3.0]]) layer(inputs) layer.add_loss(tf.reduce_mean(inputs)) print(layer.losses) <-python+>

Результат выполнения кода:

[<tf.Tensor: shape=(), dtype=float32, numpy=2.0>]

Пример

Давайте создадим собственный слой, который добавляет лосс регуляризации при вызове:

import tensorflow as tf tf.random.set_seed(0) class MyLayer(tf.keras.layers.Layer): def __init__(self, **kwargs): super().__init__(**kwargs) self.kernel = self.add_weight( shape=(3, 3), initializer='ones', trainable=True ) def call(self, inputs): self.add_loss(tf.reduce_sum(self.kernel) * 0.01) return tf.matmul(inputs, self.kernel) layer = MyLayer() inputs = tf.constant([[1.0, 2.0, 3.0]]) res = layer(inputs) print(res) print(layer.losses)

Результат выполнения кода:

tf.Tensor([[6. 6. 6.]], shape=(1, 3), dtype=float32) [<tf.Tensor: shape=(), dtype=float32, numpy=0.09>]

Смотрите также

  • класс Layer,
    который является базовым классом для всех слоев
  • метод add_weight,
    который добавляет вес к слою
  • метод add_metric,
    который добавляет метрику к слою
  • атрибут losses,
    который хранит список добавленных лоссов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить