1

我正在使用来自 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 层,即类分数略有变化。虽然网络检测到的图像类别是正确的。(它是一个网球)

同一张图片的等级分数略有不同是否正常?我的意思是,这会发生吗?或者对于正确实施的预训练模型,网络每次都应该为您提供完全相同的类别分数。

4

1 回答 1

2

班级分数可能不同的可能原因:

  • 您正在使用 GPU:GPU 评估具有轻微的随机性,因此如果您在前馈评估中使用 GPU,它可能会给出略有不同的分数。
  • 您在训练模式下使用模型model.train()并且没有激活评估模式使用model.eval()并且您的模型包含一些随机部分,例如丢失或向输入添加噪声。那么这些随机部分仍然是活跃的。
于 2018-03-12T13:01:19.417 回答