tensorflow - CNN 损失停留在 2.302 (ln(10))

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

我正在尝试对神经网络进行建模来解决 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。神经网络损失函数是否陷入了停滞状态?

最佳答案

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

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

关于tensorflow - CNN 损失停留在 2.302 (ln(10)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47822099/

相关文章:

tensorflow - 在 Tensorflow 中可视化注意力激活

machine-learning - 具有 2D Action 和 2D 状态的 Q 学习

python - Tensorflow reshape 张量

tensorflow - 使用 Keras model.fit_generator 时 CUDA|RAM 内存不足

Tensorflow:从具有可变序列长度的双向 rnn 获取输出

python - 如何将 Tensorflow BatchNormalization 与 GradientTape 结合使用?

python - Tensorflow:全局步骤必须来自与损失相同的图表

python - 为什么 keras 模型编译但 fit_generator 命令抛出 'model not compiled runtime error' ?

lua - 在 Torch 中将 Softmax 添加到 ResNet 模型

构建正确英语句子的 C# 库