【发布时间】:2017-10-29 09:26:06
【问题描述】:
研究生,刚接触Keras 和神经网络试图将一个非常简单的前馈神经网络拟合到一维正弦。
以下是我能找到的最合适的三个示例。在图上,您可以看到网络与地面实况的输出
完整的代码,短短几行,贴在这里example Keras
我正在考虑层数、不同的激活函数、不同的初始化以及不同的损失函数、批量大小、训练样本的数量。除了上述示例之外,似乎没有一个能够改善结果。
如果有任何 cmets 和建议,我将不胜感激。正弦是神经网络拟合的硬函数吗?我怀疑答案不是,所以我一定是做错了什么……
5 年前有一个类似的问题here,但是那里的 OP 没有提供代码,仍然不清楚出了什么问题或他如何解决这个问题。
【问题讨论】:
-
您的网络有多“深”?当且仅当网络的深度和宽度足够大时,ANN 通常擅长处理非线性问题。两三层是优秀的,但单层是愚蠢的。此外,在处理信号(或宽度)的给定层中,您可能没有足够的“分辨率”
-
@PatrickSturm 我尝试了 3 到 10 层之间的任何东西,每层有 10 个或更多神经元。上面说〜4层差异很小。
-
这绝对够了,所以我很难过。请问一下给了多少个训练样例?
-
@PatrickSturm 1000 到 10000,没有区别...代码在这里gist.github.com/anonymous/c816eb15daf949543e96dd2c64174670
-
尝试规范化输入值,例如从 -1 到 1。还按比例缩小输出值,因为 tanh 难以处理接近 +/- 1 的值
标签: python machine-learning neural-network deep-learning keras