神经网络成本函数实现

时间:2018-01-23 03:30:10

标签: python-3.x machine-learning neural-network

我正在实现神经网络来训练python中的手写数字。以下是成本函数, enter image description here

log(1-(h(x)) 中,如果h(x)为1,则会产生log(1-1),即log(0)。所以我得到了数学错误。

我在10-60之间随机初始化权重。我不确定我需要改变的地方以及我必须改变的地方!

1 个答案:

答案 0 :(得分:1)

在此公式中,h(x)通常是sigmoidh(x)=sigmoid(x),所以它永远不会是1.0,除非网络中的激活太大(这很糟糕并会导致问题)无论如何)。 log(h(x))h(x)=0可能出现同样的问题,即当x为较大的负数时。

如果您不想担心数字问题,只需在计算日志之前添加一个小数字:log(h(x) + 1e-10)

其他问题:

  • [10, 60]范围内的权重初始化看起来不正确,最好是小型随机数,例如来自[-0.01, 0.01]
  • 上面的公式是计算二进制交叉熵损失。如果您正在使用MNIST,它有10个类,因此损失必须是多类交叉熵。有关详细信息,请参阅this question