Я хочу реализовать свою собственную метрику в Keras. Согласно документации, моя пользовательская метрика должна быть определена как функция, которая принимает в качестве входных данных два тензора y_pred
и y_true
и возвращает одно значение тензора.
Однако я смущен тем, что именно будет содержаться в этих тензорах y_pred
и y_true
когда выполняется оптимизация. Это всего лишь одна точка данных? Это целая партия? Вся эпоха (возможно, нет)? Есть ли способ получить формы тензоров?
Может ли кто-нибудь указать на заслуживающее доверия место, где я могу получить эту информацию? Любая помощь будет оценена по достоинству. Не уверен, если это уместно, но я использую TensorFlow.
Вещи, которые я пробовал до сих пор, чтобы ответить на это:
- Проверка документации по метрикам Keras (нет объяснений там, где эти тензоры).
- Проверяя исходный код для показателей Keras и пытаясь понять эти тензоры, просмотрев реализацию
y_true
для других показателей (это, по-видимому, предполагает, чтоy_true
иy_pred
имеют метки для всей партии, но я не уверен). - Чтение этих вопросов stackoverflow: 1, 2, 3 и другие (никто не отвечает на мой вопрос, большинство из них сосредоточено на OP, не понимающем разницу между тензором и значениями, вычисленными с использованием этого тензора во время сеанса).
- Распечатайте значения
y_true
иy_pred
во время оптимизации, определив такую метрику:
def test_metric(y_true, y_pred):
y_true = K.print_tensor(y_true)
y_pred = K.print_tensor(y_pred)
return y_true - y_pred
(к сожалению, во время оптимизации ничего не печатают).