【发布时间】:2019-07-31 00:32:13
【问题描述】:
我正在实现一个反向传播的神经网络。权重初始化为 (-0.5, 0.5)。然而,在第一次将输入向前发送和错误并向后传播后,权重增加到 1000 左右,有时甚至是 2000。(在输入层和隐藏层之间)
网络的拓扑结构由 3 层组成:1 个输入层、1 个隐藏层和 1 个输出层。 输入层有 95 个节点,隐藏层有 3 个节点,输出层有 2 个节点。 训练数据集有 40,000 个条目,它们使用 z 分数进行归一化。
看到如此高的数字后,我怀疑我的实现,但话又说回来,在第一次传播时将学习率设置为 1,如果每个条目的 (output*error)=0.25 左右,这是合理的,那么权重更改为大约 1000 似乎是合理的。
不管怎样,神经网络中的权重应该这么高吗?
感谢
【问题讨论】:
-
你用的是什么激活函数?
-
@Cristy 1/(1+e^(-input))
-
你用的是什么优化算法?对于它们中的大多数,包括基本的随机梯度下降,学习率 1 太大、太多、太大了,你的模型可能永远不会以这样的学习率收敛。参见例如medium.com/octavian-ai/… 进行一些讨论。
-
1 是相当高的学习率。我建议你尝试一些更小的东西,比如 0.1 看看会发生什么。
标签: tensorflow machine-learning neural-network