我使用caffe / example / mnist网络对数字进行分类。当我给网络一张数字图片时,似乎工作正常。但是当我给网络一张图片而不是一个数字时,受过mnist训练的网络softmax层给出的概率总是有一个概率为1而其他概率为0,如:
[0,0,0,...,1,0,0,0]。
我认为应该是这样的:
[0,0.1,0.2,...,0.4,0.1,0.2],
在这种情况下,我可以说这不应该是一个数字。有什么问题?
答案 0 :(得分:0)
很难知道会发生什么,因为它没有经过非数字训练,它必须给出总和为1的结果。通过使用Softmax,你告诉网络有一个数字,同时显示一个非数字。您无法查看其输出,然后确定它是否为数字。
此外,MNIST的训练数据非常陈规定型,不利于推广。前景编号总是 255,背景总是 0.平均值将更接近0,因为背景像素更多。简单地呈现具有100的平均像素值的图像可以将预测偏向于通常具有更多像素的数字(可能像8)。您只能期望网络推广到类似类型的刺激。对于您的任务,您应该进行大量的数据扩充。
您希望允许所有数字的概率为零,您可以使用交叉熵损失来执行此操作。这也允许概率也总和大于1(最大10)。你也可以尝试为"非数字"添加另一个类。然而,对于Softmax,你应该呈现非数字刺激和数字刺激,这些刺激与自然刺激更相似(因此它不能轻易分离)。
答案 1 :(得分:0)
根据caffe / examples / mnist训练mnist后,在部署时,您必须为网络提供0-1而不是0-255范围内的图像。尝试一下,看看你是否得到正确的probs Illustration image