我试图在一个简单的线性插值上为离散函数训练一个2层神经网络,我尝试了许多不同的学习率以及不同的激活函数,似乎什么也没学到! / p>
我实际上花了最后6个小时来调试以下代码,但似乎没有错误!有什么解释?
longitude
答案 0 :(得分:1)
尽管您的问题很简单,但是扩展性很差:x
的范围是255到200K。这种差的缩放比例会导致数值不稳定,并且总体上会使训练过程变得不必要地不稳定。
要解决此技术问题,您只需要将输入范围缩放到[-1, 1]
(或[0, 1]
)范围即可。
请注意,这种缩放在深度学习中非常普遍:图像缩放到[-1, 1]
范围(例如,参见torchvision.transforms.Normalize
)。
为了更好地了解扩展响应的重要性,您可以研究在this paper中进行的数学分析。
答案 1 :(得分:0)
您可以使用NN执行简单插值,但是您必须考虑以下因素:
我建议以下设置:
对于激活函数:对于简单的插值,身份激活函数可以将NN转换为线性回归器,这可以很好地推广。但是,对于其他数据,您应考虑将整流线性单位(Relu)用于大数据,将Logistic / Tanh用于常规尺寸数据。
如果有大量数据,我将为权重选择一个迭代优化器,如简单的梯度下降或Adam。另一方面,如果数据很少,我将使用牛顿近似LBFGS,因为您将在合理的较低计算时间内获得权重的良好近似。
改变每层神经元的数量和执行批处理学习的层数以寻求更好的近似值。