我正在尝试对神经网络进行建模以解决CIFAR-10数据集,但是我面临着这个非常奇怪的问题,我已经尝试了6种不同的CNN体系结构,并使用了许多不同的CNN超参数和完全连接的#neurons值,但似乎都为了失败而损失2.302,而相应的精度为0.0625,为什么会发生这种情况,CNN或神经网络的特性使它如此,我还尝试了dropout,l2_norm,不同的内核大小,CNN和Max Pool中的不同填充。我不明白为什么损失会卡在这样的奇数上?
我正在使用tensorflow来实现这一点,并且我尝试了softmax层+ cross_entropy_loss和not_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/