Pytorch预训练模型(VGG-19)相同的图像在最终的FC层中给出了略微不同的类别得分

时间:2018-03-11 20:24:57

标签: neural-network deep-learning conv-neural-network pytorch pre-trained-model

我正在使用来自torch.vision模块的预训练vgg-19 我有如下图像数据的预处理:

normalize = transforms.Normalize(
    mean=[0.485, 0.456, 0.406],
    std=[0.229, 0.224, 0.225]
)

preprocess = transforms.Compose([
   transforms.Scale(224),
   transforms.ToTensor(),
   normalize
])

问题是如果我通过网络传递像网球一样的图像并保存最终FC层的所有1000级分数并在一段时间后再次传递相同的图像,最后的FC层即类别得分略有改变。虽然网络检测到的图像类别是正确的。 (这是一个网球)

同一图像的课程成绩略有不同是否正常?我的意思是,这是否会发生?或者对于正确实施的预训练模型,网络应该每次为同一图像提供完全相同的课程分数。

1 个答案:

答案 0 :(得分:1)

课程成绩可能不同的可能原因:

  • 您正在使用GPU:GPU评估略有随机性,因此如果您在前馈评估中使用GPU,则可能会给出略微不同的分数。
  • 您在培训模式model.train()中使用该模型并且未使用model.eval()激活评估模式,并且您的模型包含一些随机部分,例如 dropout 或<强>添加噪音输入。那些随机部分仍将是活跃的。