Python PyTorch:不同批量的结果略有不同

Python PyTorch:不同批量的结果略有不同,python,neural-network,computer-vision,pytorch,Python,Neural Network,Computer Vision,Pytorch,我使用VGG19网络对CIFAR10图像进行分类,但对于不同批量的数据,我的结果略有不同。代码: net.eval() f_image = net.forward(Variable(image, requires_grad=True)).data f_image2 = net.forward(Variable(image[0].unsqueeze(0), requires_grad=True)).data f_image3 = net.forward(Variable(image[0].u

我使用VGG19网络对CIFAR10图像进行分类,但对于不同批量的数据,我的结果略有不同。代码:

net.eval()

f_image = net.forward(Variable(image, requires_grad=True)).data

f_image2 = net.forward(Variable(image[0].unsqueeze(0), requires_grad=True)).data

f_image3 = net.forward(Variable(image[0].unsqueeze(0), requires_grad=True)).data

print(‘f_image - f_image2 = {}’.format((f_image[0] - f_image2).cpu().data.numpy()))
print(‘f_image - f_image3 = {}’.format((f_image[0] - f_image3).cpu().data.numpy()))
print(‘f_image2 - f_image3 = {}’.format((f_image2 - f_image3).cpu().data.numpy()))
具体来说,图像的大小为
[批次大小、n通道、高度、宽度]
。我希望
f_图像[0]。unsqueze(0)
f_图像2
f_图像3
相同。但是,它们略有不同:

f_image - f_image2 = [[ 0.0000000e+00 3.7252903e-09 -1.8626451e-09 3.7252903e-09
0.0000000e+00 -3.7252903e-09 3.7252903e-09 -1.8626451e-09
3.7252903e-09 -1.3969839e-09]]
f_image - f_image3 = [[ 0.0000000e+00 3.7252903e-09 -1.8626451e-09 3.7252903e-09
0.0000000e+00 -3.7252903e-09 3.7252903e-09 -1.8626451e-09
3.7252903e-09 -1.3969839e-09]]
f_image2 - f_image3 = [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

差异非常小,是PyTorch的错误还是预期行为?

您的网络处于评估模式吗?@shai是的,处于评估模式。我观察到AlexNet存在相同的问题,甚至在大多数情况下都是相同的3.7252903e-09positions@DavidNg我想知道这是否是由于float32的精度有限造成的