【发布时间】:2018-07-01 19:16:19
【问题描述】:
我正在实施神经网络来训练 Python 中的手写数字。以下是成本函数,
在log(1-(h(x))中,如果h(x)为1,则结果为log(1-1),即log(0)。所以我遇到了数学错误。
我在 10-60 之间随机初始化权重。我不确定我必须改变哪里以及我必须改变什么!
【问题讨论】:
标签: python-3.x machine-learning neural-network
我正在实施神经网络来训练 Python 中的手写数字。以下是成本函数,
在log(1-(h(x))中,如果h(x)为1,则结果为log(1-1),即log(0)。所以我遇到了数学错误。
我在 10-60 之间随机初始化权重。我不确定我必须改变哪里以及我必须改变什么!
【问题讨论】:
标签: python-3.x machine-learning neural-network
在这个公式中,h(x) 通常是 sigmoid: h(x)=sigmoid(x),所以它永远不会是 1.0,除非网络中的激活量太大(这很糟糕,而且无论如何都会导致问题)。在h(x)=0 时,log(h(x)) 也可能出现同样的问题,即当 x 是一个很大的负数时。
如果您不想担心数字问题,只需在计算日志之前添加一个小数字:log(h(x) + 1e-10)。
其他问题:
[10, 60] 范围内的权重初始化看起来不正确,它们最好是小的随机数,例如来自 [-0.01, 0.01]。【讨论】:
[0, 1]。至于层数和它们的大小,这真的取决于,你可以从 2 层开始,如果有更多帮助,请交叉验证