Была написана пользовательская функция потерь, которая должна показывать отклонение от истинного направления в градусах.У меня есть направление с истинностью (x, y, z), и я пытаюсь предсказать направление, используя для оптимизатора функцию градус_грамм , которая представлена ниже:
def degrees_mean_error(y_true, y_pred):
norm = sqrt(y_pred[:, 0] ** 2 + y_pred[:, 1] ** 2 + y_pred[:, 2])
y_pred[:, 0] /= norm
y_pred[:, 1] /= norm
y_pred[:, 2] /= norm
angles = y_pred[:, 0] * y_true[:, 0] + y_pred[:, 1] * y_true[:, 1] + y_pred[:, 2] * y_true[:, 2]
return acos(angles) * 180 / np.pi
Но яесть проблема, потому что тензор не является назначением.Можно ли нормализовать тензор внутри функции потерь Кераса?Если вы этого не сделаете, ошибка будет большой, даже nan , смотрите приведенный ниже вывод без нормализации во время тренировки:
256/170926 [..............................] - ETA: 3:21 - потери: 88,1727
512/170926 [..............................] - ETA: 2:25 - потери: 66,7276
768/170926 [..............................] - ETA: 2:07 - потери: nan
1024/170926 [..............................] - ETA: 1:58 - потери: nan
1280/170926 [..............................] - ETA: 1:53 - потери: nan
1536/170926 [..............................] - ETA: 1:50 - потери: nan
1792/170926 [..............................] - ETA: 1:47 - потери: nan
2048/170926 [..............................] - ETA: 1:45 - потери: nan