Ответ 1
y_true и y_pred
Тензор y_true
- это истинные данные (или целевые, наземные, правдивые), которые вы передаете методу соответствия.
Это преобразование массива пустышек y_train
в тензор.
Тензор y_pred
- это данные, спрогнозированные (рассчитанные, выведенные) вашей моделью.
Обычно оба y_true
и y_pred
имеют абсолютно одинаковую форму. Некоторые из потерь, такие как редкие, могут принимать их с различными формами.
Форма y_true
Содержит целую партию. Его первым измерением всегда является размер пакета, и он должен существовать, даже если пакет имеет только один элемент.
Два очень простых способа найти форму y_true
:
- проверьте ваши истинные/целевые данные:
print(Y_train.shape)
- проверьте свой
model.summary()
и посмотрите последний вывод
Но его первым измерением будет размер партии.
Итак, если ваш последний слой выдает (None, 1)
, форма y_true
будет (batch, 1)
. Если последний уровень выводит (None, 200,200, 3)
, то y_true
будет (batch, 200,200,3)
.
Пользовательские метрики и функции потерь
К сожалению, печать пользовательских метрик не будет раскрывать их содержание.
Вы можете видеть их формы, например, с помощью print(K.int_shape(y_pred))
.
Помните, что эти библиотеки сначала "компилируют график", а затем "запускают его с данными". Когда вы определяете свою потерю, вы находитесь на этапе компиляции, и для запроса данных требуется модель для запуска.
Но даже если результат вашей метрики многомерный, keras автоматически найдет способы вывести один скаляр для этой метрики. (Не уверен, что это за операция, но очень вероятно, что K.mean()
спрятан под столом).
Источники. После того, как вы привыкнете к керасу, это понимание станет естественным благодаря простому прочтению этой части:
y_true: Истинные ярлыки. Тензор Theano/TensorFlow.
y_pred: Предсказания. Тензор Theano/TensorFlow той же формы, что и y_true.
Истинные метки означают истинные/целевые данные. Этикетки - это неправильно выбранное слово, это только "метки" в классификационных моделях.
Прогнозы означают результаты вашей модели.