作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用基于 Resnet152 的迁移学习来训练模型。基于 PyTorch 教程,我在保存经过训练的模型并加载它以进行推理方面没有问题。但是,加载模型所需的时间很慢。我不知道我做对了没有,这是我的代码:
将训练好的模型保存为状态字典:
torch.save(model.state_dict(), 'model.pkl')
加载它以进行推理:
model = models.resnet152()
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, len(classes))
st = torch.load('model.pkl', map_location='cuda:0' if torch.cuda.is_available() else 'cpu')
model.load_state_dict(st)
model.eval()
我对代码进行计时,发现第一行
model = models.resnet152()
加载时间最长。在 CPU 上,测试一张图像需要 10 秒。所以我的想法是这可能不是加载它的正确方法?
torch.save(model, 'model_entire.pkl')
并像这样测试它:
model = torch.load('model_entire.pkl')
model.eval()
在同一台机器上,测试一张图像只需 5 秒。
最佳答案
在第一个代码片段中,您从 TorchVision 下载模型(具有随机权重),然后将您的(本地存储的)权重加载到它。
在第二个示例中,您正在加载本地存储的模型(及其权重)。
前者会更慢,因为您需要连接到托管模型的服务器并下载它,而不是本地文件,但它更易于复制,不依赖于您的本地文件。此外,时间差应该是一次性初始化,并且它们应该具有相同的时间复杂度(因为在您执行推理时,模型已经加载到两者中,并且它们是等效的)。
关于python - 在 PyTorch 中加载用于推理的迁移学习模型的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307488/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!