Neural network Pytorch预训练模型(VGG-19)相同的图像在最后的FC层中给出了稍微不同的等级分数

Neural network Pytorch预训练模型(VGG-19)相同的图像在最后的FC层中给出了稍微不同的等级分数,neural-network,deep-learning,conv-neural-network,pytorch,pre-trained-model,Neural Network,Deep Learning,Conv Neural Network,Pytorch,Pre Trained Model,我正在使用torch.vision模块的预训练vgg-19 我对图像数据进行了如下预处理: normalize=transforms.normalize( 平均值=[0.485,0.456,0.406], 标准=[0.229,0.224,0.225] ) preprocess=transforms.Compose([ 变换。比例(224), transforms.ToTensor(), 规范化 ]) 问题是,如果我通过网络传递一个像网球一样的图像,并保存最后一个FC层的所有1000个班级分数,

我正在使用torch.vision模块的预训练vgg-19 我对图像数据进行了如下预处理:

normalize=transforms.normalize(
平均值=[0.485,0.456,0.406],
标准=[0.229,0.224,0.225]
)
preprocess=transforms.Compose([
变换。比例(224),
transforms.ToTensor(),
规范化
])
问题是,如果我通过网络传递一个像网球一样的图像,并保存最后一个FC层的所有1000个班级分数,并在一段时间后再次传递相同的图像,则最终FC层(即班级分数)会略有变化。尽管网络检测到的图像类别是正确的。(它是一个网球)


同一张图片的课堂分数略有不同,这正常吗?我是说,这会发生吗?或者,对于正确实施的预训练模型,网络应为同一图像每次提供完全相同的课堂分数。

课堂分数可能不同的原因:

  • 您使用的是GPU:GPU评估有点随机,因此如果您在前馈评估中使用GPU,它可能会给出稍微不同的分数
  • 您正在培训模式
    model.train()
    中使用模型,但未使用
    model.eval()
    激活评估模式,并且您的模型包含一些随机部分,如退出向输入添加噪波。然后,这些随机部分仍将处于活动状态