Потеря при повороте изображения?

#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 градусов, они на самом деле близки, нам просто нужно измерить расстояние «в другую сторону».

В любом случае, есть идеи, что не так с приведенной выше потерей — она вообще не работает?