研究生,Keras 和神经网络的新手试图将一个非常简单的前馈神经网络拟合到一维正弦。
以下是我可以获得的最合适的三个示例。在图中,您可以看到网络输出与地面实况的对比
这里发布了完整的代码,只有几行 example Keras
我在研究层数、不同的激活函数、不同的初始化和不同的损失函数、批量大小、训练样本数。似乎没有一个能够改善上述示例之外的结果。
如有任何意见和建议,我将不胜感激。正弦函数是神经网络拟合的硬函数吗?我怀疑答案不是,所以我一定是做错了什么......
有个类似的问题here从 5 年前开始,但那里的 OP 没有提供代码,目前还不清楚出了什么问题,也不清楚他是如何解决这个问题的。
请您参考如下方法:
为了使您的代码正常工作,您需要:
- 在 [-1, +1] 范围内缩放输入值(神经网络不喜欢大值)
- 也缩放输出值,因为 tanh 激活在接近 +/-1 时效果不佳
- 在除最后一层以外的所有层都使用 relu 激活而不是 tanh(收敛方式更快)
通过这些修改,我能够使用 10 和 25 个神经元的两个隐藏层运行您的代码
