【问题标题】:Neural network cost function implementation神经网络代价函数实现
【发布时间】: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


    【解决方案1】:

    在这个公式中,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]
    • 上面的公式是计算二元交叉熵损失。如果您使用 MNIST,它有 10 个类,因此损失必须是多类交叉熵。详情请见this question

    【讨论】:

    • 谢谢...它工作...我的输入仅包含 0 和 255,因为它们是黑白图像,现在我将所有 255 更改为 0。你能建议我有多少隐藏节点和层可以用于我的网络吗?我的输入层有 7990 个节点(85x94),输出层有 10 个节点..
    • 首先,我建议您将输入重新调整为[0, 1]。至于层数和它们的大小,这真的取决于,你可以从 2 层开始,如果有更多帮助,请交叉验证
    • 抱歉错字!我已将所有 255 更改为一个而不是零。感谢您的帮助...
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 2012-04-11
    • 2017-02-16
    • 2014-04-30
    • 2019-12-13
    • 1970-01-01
    • 2013-01-03
    • 2018-10-28
    相关资源
    最近更新 更多