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