【问题标题】:Calculation of Cost function in Neural Network Getting NaN or Inf神经网络中成本函数的计算得到 NaN 或 Inf
【发布时间】:2016-10-10 23:43:03
【问题描述】:

我正在尝试使用此函数计算神经网络的 costFunction 作为我的编程任务的一部分。

其中 K 是标签的数量。 hTheta 和 y 都是大小为 (5000,10) 的矩阵,因为我有 5000 个训练示例和 10 个标签。我正在使用八度音程,我的成本函数为 NaN。 (这也是意料之中的,因为 hTheta 和 Y 的所有值都是 0 或 1,因此不会定义 log(0)*0)。

那么我应该如何计算成本?

注意 - hTheta 是由神经网络上的前馈算法生成的,y 是输入标签。

【问题讨论】:

    标签: matlab machine-learning neural-network octave backpropagation


    【解决方案1】:

    这里Yi可以是1或者0,但是hi不能是0或者1。这是因为如果你使用sigmoid logisitic 函数,然后包含 0(或 1)将需要 sigmoid 函数的参数为​​ -infinity(或 +infinity),这是不可能的。一个可能的原因可能是您必须选择的学习率太高。尝试降低学习率。当我遇到同样的问题时,这对我有用。

    【讨论】:

      【解决方案2】:

      可靠地防止这种情况发生的一般方法是减少您的值或添加一个小的值 epsilon e=10e-6(或类似的东西),以便您始终拥有 log(x+e)x+e != 0。根据您的具体操作,您可能还需要将x 剪辑到e 和1 之间。如果您将logs 组合成单个log 中的一小部分,您将再次添加e 在分母中以避免任何被零除。

      阻止任何 NAN 行为比试图避免它要好。以 RNN 为例,您可能会出现梯度爆炸——这种情况通常在您选择超参数时无法控制——导致 x=infinity 如果未捕获,则会产生 NAN。

      【讨论】:

        猜你喜欢
        • 2022-01-01
        • 1970-01-01
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        • 1970-01-01
        • 2019-01-23
        相关资源
        最近更新 更多