神经网络回归任务

您所在的位置:网站首页 神经网络mape一般多少 神经网络回归任务

神经网络回归任务

#神经网络回归任务| 来源: 网络整理| 查看: 265

关于预测标签是是较小数量级时的解决办法: 我恰恰碰上这种极端的情况,双输出,一个标签范围大概是个位数到几百,一个标签范围则是1e-3-1e-2左右。神经网络输出是loss nan. 首先明确,loss nan是由那个面向大数量级标签的输出导致的。一开始神经网络的输出大多为在-10-10之间的个位数(不管哪个输出路都是如此)。面向大数量级标签的输出跟标签差距太大,mse破防了。

当预测目标太小,比如1e-4,1e-3,如果直接用训练标签和输出进行mse损失计算,梯度太小,难以训练。 并不是因为梯度太小! 第一步loss nan原因非常简单,神经网络输出几千的值,mse就会破防(超过精度)而第一步nan,梯度无法回传,后面的情况就和第一步一模一样。

提前预处理数据,对输出标签先进行归一化。 这个办法有的任务是可行的,但有的任务就不行,标签归一化降低了神经网络的训练难度,同时也意味着减少了神经网络能够输出的信息。 比如使用归一化的标签训练出的神经网络在测试样本上输出[1.1,1.3,1.5],我没法知道[1.1,1.3,1.5]对应的真实数据是多少,因为我并不清楚测试集的方差或均值。如果使用训练集的方差和均值给输出做还原缩放,那么可信度和说服力就会大大缩水。毕竟,没法肯定训练集和测试集的统计分布是完全一致的。 综上所述,1不可行。

提前预处理数据,通过人为指定的缩放,而不是1归一化来实现。比如,如果数据数量级较小,首先将其×1000倍或多少倍,等等。由于操作是人为设计出来的,逆操作不像1那样在测试集上不可知。2的缺点也很明显,不灵活,难以设计操作等。经过实验,2效果不佳,没有改变nan的局面

改变精度 实验结果:torch.float32改到torch.float64,损失仍然显示为nan。

设计损失 常见损失链接 采用mae(mean abs error),损失终于不再是nan,不过仍然好几千。需要有其他的办法辅助,或是想更好的办法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3