Плавное отклонение в TensorFlow
На малых отклонениях
плавное отклонение
ведёт себя как квадрат
разности, на крупных -
как модуль, поэтому
единичный выброс меньше
тянет итог вверх. В Keras
за это отвечает класс
Huber.
Создадим объект ошибки, зададим эталонный ряд и ряд предсказаний с умеренными отличиями, затем выведем одно число:
import tensorflow as tf
huber = tf.keras.losses.Huber()
actual = tf.constant([1.0, 2.0, 3.0])
guess = tf.constant([1.5, 2.5, 2.0])
print(huber(actual, guess))
# выведет tf.Tensor(0.25, shape=(), dtype=float32)
При одном большом промахе вклад линейный, а не квадратичный. Сравним идеальное совпадение и сильное расхождение на второй координате:
import tensorflow as tf
huber = tf.keras.losses.Huber()
actual = tf.constant([0.0, 10.0])
guess = tf.constant([0.0, 0.0])
print(huber(actual, guess))
# выведет tf.Tensor(4.75, shape=(), dtype=float32)
Соберите эталон [2.0, 4.0]
и прогноз [2.5, 3.0].
Выведите одно число -
значение плавного отклонения.
Задайте эталон [0.0, 5.0]
и ответ [0.0, 0.0].
Выведите итоговую ошибку
одним числом.
Создайте эталонный ряд
[1.0, 3.0, 8.0]
и ряд предсказаний
[1.0, 4.0, 1.0].
Выведите одно число -
ошибку по этим данным.