pytorch初始模型为每个输入图像输出错误的标签

pytorch初始模型为每个输入图像输出错误的标签,pytorch,Pytorch,对于pytorch模型,我发现它解释了如何对图像进行分类。我试图将同样的程序应用于初始模型。但是,对于我加载的每个图像,该模型都会失败 代码: 作为输出,我得到如下结果: (“预测:”,u“柱塞,水管工助手”) (“预测:”,u“塑料袋”) (“预测:”,u“柱塞,水管工助手”) 我发现在应用模型之前需要调用model.eval()。由于批处理规范化和退出层,模型在培训和测试中的作用不同。我执行了您的代码,添加了model.eval()行,得到: ('prediction:', u'Egypti

对于pytorch模型,我发现它解释了如何对图像进行分类。我试图将同样的程序应用于初始模型。但是,对于我加载的每个图像,该模型都会失败

代码:

作为输出,我得到如下结果:

(“预测:”,u“柱塞,水管工助手”)

(“预测:”,u“塑料袋”)

(“预测:”,u“柱塞,水管工助手”)


我发现在应用模型之前需要调用
model.eval()
。由于批处理规范化和退出层,模型在培训和测试中的作用不同。

我执行了您的代码,添加了
model.eval()
行,得到:

('prediction:', u'Egyptian cat')
('prediction:', u'groenendael')
('prediction:', u'lion, king of beasts, Panthera leo')
但是,如果我更改预处理(只需删除
normalize
操作,并设置
model.transform\u input=True
以在PyTorch中使用初始v3的默认预处理),结果会略有不同:

('prediction:', u'tiger cat')
('prediction:', u'Border collie')
('prediction:', u'lion, king of beasts, Panthera leo')
我不是一个猫和狗专家,但快速的谷歌搜索表明这些结果更准确(你输入图片中的猫看起来更像老虎而不是埃及猫,边境牧羊犬看起来也更像输入而不是格伦代尔)

我的观点是,我认为应该使用inception\u v3默认预处理(这是默认行为,除非您将其更改为
model.transform\u input=False
),而不是经典的规范化,但我找不到关于这一点的明确答案

讨论那件事


希望这对其他人有所帮助。

辍学层也是如此,这两个层在培训和测试阶段表现不同,请参阅
('prediction:', u'tiger cat')
('prediction:', u'Border collie')
('prediction:', u'lion, king of beasts, Panthera leo')