Neural network 当图像中没有任何内容时,二值图像数字卷积神经网络具有很高的可信度

Neural network 当图像中没有任何内容时,二值图像数字卷积神经网络具有很高的可信度,neural-network,conv-neural-network,image-recognition,pytorch,digit,Neural Network,Conv Neural Network,Image Recognition,Pytorch,Digit,我一直在训练我的卷积神经网络,在样式上类似于Mnist数据集。它工作完美,训练和测试数据都接近100% 起初,我在4通道二进制图像上训练它,其中白色为“255”,黑色为“0”。它有10个输出,每个数字一个,然后我用softmax来获得每个类别的概率 然而,我想使用滑动窗口技术来分析一页数字。这是不可能的,因为对于一个完全白色的输入,它会返回几乎100%的置信度,即它是一个4,而对于其他所有输入几乎都没有 我想这可能是因为神经网络是在图像的白色空间而不是黑色空间上训练的,因为黑色像素的值为0,所以

我一直在训练我的卷积神经网络,在样式上类似于Mnist数据集。它工作完美,训练和测试数据都接近100%

起初,我在4通道二进制图像上训练它,其中白色为“255”,黑色为“0”。它有10个输出,每个数字一个,然后我用softmax来获得每个类别的概率

然而,我想使用滑动窗口技术来分析一页数字。这是不可能的,因为对于一个完全白色的输入,它会返回几乎100%的置信度,即它是一个4,而对于其他所有输入几乎都没有

我想这可能是因为神经网络是在图像的白色空间而不是黑色空间上训练的,因为黑色像素的值为0,所以我将图像反转并再次训练网络。同样,在完全白色的图像上,它只返回接近100%的置信度

对于这两种情况,当图像完全为黑色时,它返回的每个类的百分比都很低,这是应该的,尽管4仍然是最高的

我不理解这背后的直觉,所以任何帮助都将是巨大的,即使你可以说这不是通常的行为。这是意料之中的事吗?我是否应该为非数字的事物创建另一个类并对其进行培训

这是我的神经网络: 它是完全卷积的,所以我可以用它实现快速滑动窗口,但最后的卷积相当于完全连接的层

类完全卷积信道(nn.Module):
定义初始化(自):
super(完全卷积信道,自).\uuuu init\uuuu()
self.conv1=nn.Conv2d(1,6,5)
self.pool=nn.MaxPool2d(2,2)
self.conv2=nn.Conv2d(6,16,5)
self.fconv1=nn.Conv2d(16,120,(4,2))
self.fconv2=nn.Conv2d(120,84,1)
self.fconv3=nn.Conv2d(84,10,1)
def前进(自身,x):
x=自转换1(x)
x=F.relu(x)
#relu不改变大小
x=自存储池(x)
x=自池(F.relu(self.conv2(x)))
#x=x.view(-1,16*4*2)
x=F.relu(自身fconv1(x))
x=F.relu(自身fconv2(x))
x=self.fconv3(x)
#打印(列表(x尺寸))
返回x
我是否应该为非数字的事物创建另一个类并对其进行培训


对。您的网络经过培训可以识别数字,而不是空格。您可以使用此策略重新训练网络,也可以预处理数字页面,以避免给网络添加空白。

好的,太好了,非常感谢……我想知道这是否是预期的结果,因为这样做似乎很奇怪me@RalphSinnhuber如果您对我的问题感到满意,您可以接受:)