【发布时间】:2021-04-19 14:20:33
【问题描述】:
我设置了一个具有 10 个输出值/节点的 NN。其中一些是坐标、角度和距离。 经过大量训练后,我的训练和测试损失变得非常好。 (~0.05) 但是在视觉上测试了这些值之后,结果并没有那么好。 (有些是,但不是全部) 我的问题是:
- 我需要一个损失函数来计算每个值的损失值吗? 我注意到我的标签值的总和和我的 pred 值的总和非常相似。
- 减小我的 NN 输出的维度是否可以解决这个问题? (而不是 10 个输出只有 6 个)
用于损失计算:
def get_loss(pred, label, end_points):
hubers = tf.compat.v1.losses.huber_loss(label, pred)
regression_loss = tf.compat.v1.reduce_mean(hubers)
tf.compat.v1.summary.scalar('regression loss', regression_loss)
tf.compat.v1.add_to_collection('losses', regression_loss)
return regression_loss
感谢您的宝贵时间。 :)
编辑:
感谢您的回复。 :) 我只是在视觉上测量错误,因为有无限正确的解决方案。我试图检测物体上的特定点。 因为我只有一个小数据集(约 500 组),所以我过去常常将数据围绕 z 轴以 15 度的步长旋转以获取更多数据。在以这种方式增加数据之前,最佳损失约为 0.2。 我的输入标签是一个 10*1 的向量,它看起来像这样:
[距离,X,Y,Z,alpha,beta,gamma,deltaX,deltaY,deltaZ]
5.720092519071295900e-02
1.006699085235540636e-03
8.009913066864016162e-02
1.114500999450683594e+00
-3.119294947657255790e+00
4.009960331703191737e-03
-2.526702780658843128e+00
-1.214617763502171266e-01
-1.560672931229585836e-01
8.294558525085449219e-02
虽然我的 pred 看起来像这样:
4.625578597187995911e-02
-4.372183978557586670e-02
1.622541248798370361e-02
1.086338281631469727e+00
-3.110351085662841797e+00
7.853045314550399780e-02
-2.459422111511230469e+00
-4.620660468935966492e-02
-5.462351441383361816e-02
7.349613308906555176e-02
Picture of my actual loss function (green is train loss; red is test loss)
我根本没有缩放值。
【问题讨论】:
-
看,您需要添加更多信息,例如代码和数据,以便人们理解和调试您的解决方案,如果不知道您正在使用什么样的数据等,很难猜测。
标签: python tensorflow neural-network regression loss