拟合正弦函数的神经网络玩具模型失败,怎么了?

the*_*hem 1 python machine-learning neural-network deep-learning keras

刚接触Keras神经网络的研究生正试图将一个非常简单的前馈神经网络拟合到一维正弦波上。

以下是我可以获得的最合适的三个示例。在图中,您可以看到网络的输出与地面真相的对比

神经网络输出与地面真相(运行3)

神经网络输出与地面真相(运行1)
神经网络输出与地面真相(运行2)

完整的代码(仅几行)在此处示例中发布Keras


我正在使用多个层,不同的激活函数,不同的初始化和不同的损失函数,批处理大小,训练样本数量。除上述示例外,似乎没有一个能够改善结果。

我将不胜感激任何意见和建议。正弦是神经网络拟合的硬函数吗?我怀疑答案不是,所以我一定做错了...


从5年前开始,这里有一个类似的问题,但是那里的OP没有提供代码,并且仍然不清楚发生了什么问题或他如何解决此问题。

Bla*_*ear 5

为了使代码正常工作,您需要:

  • 在[-1,+1]范围内缩放输入值(神经网络不喜欢大值)
  • 也可以缩放输出值,因为tanh激活在+/- 1附近效果不佳
  • 使用RELU激活,而不是在正切所有,但最后一层(收敛的方式更快)

经过这些修改,我能够在10和25个神经元的两个隐藏层中运行您的代码