Я использую сеть 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()))
В частности, изображение имеет размер [batch_size, n_channels, height, width]
. И я ожидаю, что f_image[0].unsqueeze(0)
будет таким же, как f_image2
и f_image3
. Тем не менее, они немного отличаются:
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?