【问题标题】:CNN Loss stuck at 2.302 (ln(10))CNN 损失停留在 2.302 (ln(10))
【发布时间】:2018-05-29 01:25:13
【问题描述】:

我正在尝试对神经网络进行建模以解决 CIFAR-10 数据集,但我面临一个非常奇怪的问题,我尝试了超过 6 种不同的 CNN 架构以及许多不同的 CNN 超参数和完全连接的#neurons 值,但似乎都失败了,损失为 2.302,相应的准确度为 0.0625,为什么会发生这种情况,CNN 或神经网络的什么属性导致了这种情况,我还尝试了 dropout、l2_norm、不同的内核大小、CNN 和 Max Pool 中的不同填充。我不明白为什么损失会停留在这么一个奇数上?

我正在使用 tensorflow 实现这一点,并且我尝试了 softmax 层 + cross_entropy_loss 和 without_softmax_layer + sparse_cross_entropy_loss。是不是神经网络损失函数卡在了高原?

【问题讨论】:

    标签: tensorflow deep-learning artificial-intelligence conv-neural-network


    【解决方案1】:

    这似乎是您不小心将非线性/激活函数应用于网络的最后一层。请记住,交叉熵作用于 0 到 1 范围内的值。当您通过在计算交叉熵之前应用 softmax 函数自动“强制”输出到此范围时,您应该只“应用”线性激活功能(只是不要添加任何功能)。

    顺便说一句,2.302 的值绝不是随机的。当您假设所有 10 个类 (CIFAR-10) 最初获得相同的预期扩散概率 0.1 时,softmax 损失的结果是 -ln(0.1)。查看 Andrej Karpathy 的解释: http://cs231n.github.io/neural-networks-3/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2020-07-25
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多