Nee*_*eel 2 deep-learning conv-neural-network pytorch vgg-net
我正在使用 pytorch 中开箱即用的 VGG-16 网络来预测一些图像索引。我发现对于同一个输入文件,如果我预测多次,我会得到不同的结果。这对我来说似乎违反直觉。一旦预测了权重(因为我使用的是预训练模型),任何步骤都不应该有任何随机性,因此使用相同输入文件的多次运行将返回相同的预测。
这是我的代码:
import torch
import torchvision.models as models
VGG16 = models.vgg16(pretrained=True)
def VGG16_predict(img_path):
transformer = transforms.Compose([transforms.CenterCrop(224),transforms.ToTensor()])
data = transformer(Image.open(img_path))
output = softmax(VGG16(data.unsqueeze(0)), dim=1).argmax().item()
return output # predicted class index
VGG16_predict(image)
Run Code Online (Sandbox Code Playgroud)
小智 5
回想一下,许多模块有两种训练与评估状态:“某些模型使用具有不同训练和评估行为的模块,例如批量归一化。要在这些模式之间切换,请根据需要使用 model.train() 或 model.eval() . 有关详细信息,请参阅 train() 或 eval()。” (https://pytorch.org/docs/stable/torchvision/models.html)
在这种情况下,分类器层包括 dropout,它在训练期间是随机的。VGG16.eval()
如果您希望评估是非随机的,请运行。
归档时间: |
|
查看次数: |
348 次 |
最近记录: |