Метод __call__ класса Loss
Метод __call__ класса Loss вызывается при обращении к объекту функции потерь как к функции.
Он принимает истинные значения y_true и предсказанные значения y_pred,
а также возвращает скалярный тензор с вычисленным значением потерь.
Первый параметр y_true содержит правильные ответы,
второй параметр y_pred - предсказания модели.
Дополнительно можно передать sample_weight для взвешивания отдельных примеров.
Синтаксис
loss(y_true, y_pred)
Пример
Давайте вычислим потери с помощью встроенной функции MeanSquaredError:
import tensorflow as tf
loss_fn = tf.keras.losses.MeanSquaredError()
y_true = tf.constant([1, 2, 3, 4, 5])
y_pred = tf.constant([1, 2, 3, 5, 5])
res = loss_fn(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.4, shape=(), dtype=float32)
Пример
Давайте вычислим потери для двумерных тензоров с помощью MeanAbsoluteError:
import tensorflow as tf
loss_fn = tf.keras.losses.MeanAbsoluteError()
y_true = tf.constant([[1, 2, 3], [4, 5, 6]])
y_pred = tf.constant([[1, 2, 4], [4, 5, 6]])
res = loss_fn(y_true, y_pred)
print(res)
Результат выполнения кода:
tf.Tensor(0.16666667, shape=(), dtype=float32)
Пример
Давайте передадим sample_weight для взвешивания отдельных примеров:
import tensorflow as tf
loss_fn = tf.keras.losses.MeanSquaredError()
y_true = tf.constant([1, 2, 3, 4, 5])
y_pred = tf.constant([1, 2, 3, 5, 5])
sample_weight = tf.constant([1.0, 1.0, 1.0, 2.0, 2.0])
res = loss_fn(y_true, y_pred, sample_weight=sample_weight)
print(res)
Результат выполнения кода:
tf.Tensor(0.5714286, shape=(), dtype=float32)
Смотрите также
-
класс
Loss,
который является базовым классом для всех функций потерь -
метод
call,
который выполняет вычисление потерь внутри класса -
метод
__call__,
который позволяет вызывать объект потерь как функцию -
метод
get_config,
который возвращает конфигурацию функции потерь