首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么EfficientNet相同的模型返回不同的预测

为什么EfficientNet相同的模型返回不同的预测
EN

Stack Overflow用户
提问于 2020-07-03 19:53:28
回答 1查看 54关注 0票数 0
代码语言:javascript
运行
复制
!pip install efficientnet_pytorch -q


import torch 
import torch.nn as nn
import efficientnet_pytorch as efn



device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
device



model = efn.EfficientNet.from_name('efficientnet-b0')
model = model.to(device)

img = torch.ones((2, 3, 680, 680))*0.5
img = img.to(device)
preds1 = model(img)
preds2 = model(img)
preds3 = model(img)

print(preds1[0][0])
print(preds2[0][0])
print(preds3[0][0])

del model, img, preds1, preds2, preds3

preds1、preds2和preds3是不同的。我对这一点感到困惑,模型是一样的,输入也是一样的,为什么预测是不同的?

代码语言:javascript
运行
复制
tensor(0.2599, grad_fn=<SelectBackward>)
tensor(0.1364, grad_fn=<SelectBackward>)
tensor(0.1263, grad_fn=<SelectBackward>)
EN

回答 1

Stack Overflow用户

发布于 2020-07-03 20:49:24

哇,解决了!我检查了Efficientnet-pytorch源代码,突然发现我应该将模型转换为eval()模式。

现在预测是一样的!!

代码语言:javascript
运行
复制
model = efn.EfficientNet.from_name('efficientnet-b0')
model = model.to(device)
_ = model.eval()  ## hey, look here!!

img = torch.ones((2, 3, 680, 680))*0.5
img = img.to(device)
preds1 = model(img)
preds2 = model(img)
preds3 = model(img)

print(preds1[0][0])
print(preds2[0][0])
print(preds3[0][0])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62714886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档