#keras #neural-network #loss-function
Вопрос:
Я решаю проблему «Имея изображение объекта, поверните его, снизу вниз, сверху вверх». Я разделил круг на 360/5 частей, сделал их горячими переменными, и это работает… просто с неоптимальной точностью. То, что я ищу, — это пользовательская функция потерь (но у меня есть проблемы, так как я новичок в Keras).
То, что у меня есть до сих пор, — это
def custom_loss(y_actual, y_pred):
loss = tf.math.minimum(tf.reduce_mean(tf.reduce_sum(tf.square(tf.math.argmax(y_actual)
- tf.math.argmax(y_pred)))),
72*72 - tf.reduce_mean(tf.reduce_sum(tf.square(tf.math.argmax(y_actual)
- tf.math.argmax(y_pred)))))
return loss
Идея заключается в том, что традиционный один-горячий рассматривает элементы как независимые, в то время как в моем случае, если основная истина составляет 45 градусов, ответ «40 градусов» менее неверен, чем ответ «90 градусов».
Кроме того, если у нас есть пограничные ответы, такие как 5 градусов и 355 градусов, они на самом деле близки, нам просто нужно измерить расстояние «в другую сторону».
В любом случае, есть идеи, что не так с приведенной выше потерей — она вообще не работает?