如何在TensorFlow中的自定义损失函数中标准化张量?

j6wj1997

编写了自定义损失函数,该函数必须显示与真值方向的偏差(以度为单位)。我有真值方向(x,y,z),并且我尝试使用优化程序degree_mean_error函数预测方向,如下所示:

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,请在训练过程中在不使用normilize的情况下查看以下输出:

256/170926 [....................................]-ETA:3:21-损失:88.1727

512/170926 [.....................]-ETA:2:25-损失:66.7276

768/170926 [..............................]-预计到达时间:2:07-损失:南

1024/170926 [..............................]-预计到达时间:1:58-损失:南

1280/170926 [.....................]-ETA:1:53-损失:nan

1536/170926 [.....................]-ETA:1:50-损失:nan

1792/170926 [..............................]-预计:1:47-损失:nan

2048/170926 [.....................]-ETA:1:45-损失:nan

优尔菲

您可以立即找到偏差:

 angles = (y_pred[:, 0] / norm) * y_true[:, 0] + (y_pred[:, 1] / norm) * y_true[:, 1] + (y_pred[:, 2] / norm) * y_true[:, 2]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章