在 PyTorch 中加载迁移学习模型进行推理的正确方法是啥?

     2023-03-12     165

关键词:

【中文标题】在 PyTorch 中加载迁移学习模型进行推理的正确方法是啥?【英文标题】:What is the proper way to load a transfer learning model for inference in PyTorch?在 PyTorch 中加载迁移学习模型进行推理的正确方法是什么? 【发布时间】:2019-10-11 22:23:17 【问题描述】:

我正在使用基于 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 秒。所以我的想法是这可能不是加载它的正确方法?

如果我像这样保存整个模型而不是 state.dict:

torch.save(model, 'model_entire.pkl')

并像这样测试它:

model = torch.load('model_entire.pkl')
model.eval()

在同一台机器上测试一张图像只需 5 秒。

所以我的问题是:这是加载 state_dict 进行推理的正确方法吗?

【问题讨论】:

这两种方法我都用过,我建议使用后者。在前者上,您首先使用随机权重实例化模型,然后加载预训练的模型,因此它更慢是有道理的。 【参考方案1】:

在第一个代码 sn-p 中,您从 TorchVision 下载一个模型(具有随机权重),然后将您的(本地存储的)权重加载到它。

在第二个示例中,您正在加载本地存储的模型(及其权重)。

前者会更慢,因为您需要连接到托管模型的服务器并下载它,而不是本地文件,但它更可复制而不依赖于您的本地文件。此外,时间差应该是一次性初始化,并且它们应该具有相同的时间复杂度(在您执行推理时,模型已经加载到两者中,并且它们是等效的)。

【讨论】:

pytorch基础——迁移学习(代码片段)

一、介绍内容使机器能够“举一反三”的能力知识点使用PyTorch的数据集套件从本地加载数据的方法迁移训练好的大型神经网络模型到自己模型中的方法迁移学习与普通深度学习方法的效果区别两种迁移学习方法的区别二、从图... 查看详情

在 Pytorch 中加载我的模型时丢失和意外键的问题

】在Pytorch中加载我的模型时丢失和意外键的问题【英文标题】:ProblemwithmissingandunexpectedkeyswhileloadingmymodelinPytorch【发布时间】:2019-05-2305:48:00【问题描述】:我正在尝试使用本教程加载模型:https://pytorch.org/tutorials/beginner/saving_l... 查看详情

推理实践丨如何使用mindstudio进行pytorch模型离线推理

摘要:本教程所示例的任务是AscendPytorch离线推理,即对给定的已经训练好的模型参数和推理脚本,在Ascend310/710和Tesla设备上进行推理应用。本文分享自华为云社区《​​使用MindStudio进行Pytorch模型离线推理​​》,作者:袁一博... 查看详情

推理实践丨如何使用mindstudio进行pytorch模型离线推理

摘要:本教程所示例的任务是AscendPytorch离线推理,即对给定的已经训练好的模型参数和推理脚本,在Ascend310/710和Tesla设备上进行推理应用。本文分享自华为云社区《使用MindStudio进行Pytorch模型离线推理》,作者... 查看详情

深度学习之pytorch实战——迁移学习

...(这篇博客其实很早之前就写过了,就是自己对当前学习pytorch的一个教程学习做了一个学习笔记,一直未发现,今天整理一下,发出来与前面基础形成连载,方便初学者看,但是可能部分pytorch和torchvision的API接口已经更新了,... 查看详情

保存和加载 Pytorch 模型检查点以进行推理不起作用

】保存和加载Pytorch模型检查点以进行推理不起作用【英文标题】:SavingandLoadingPytorchModelCheckpointforinferencenotworking【发布时间】:2019-06-1304:27:37【问题描述】:我有一个使用LSTM训练的模型。该模型是在GPU上训练的(在GoogleCOLABORATO... 查看详情

pytorch知识点总结100问

PyTorch知识点总结什么是PyTorch?它有什么特点和优势?PyTorch中的张量(Tensor)是什么?它与NumPy中的数组有何区别?请介绍一下PyTorch的执行流程。PyTorch中的autograd是什么?它有什么作用?请简要介... 查看详情

如何使用 Pytorch 将二进制迁移学习模型扩展到多个图像类别?

】如何使用Pytorch将二进制迁移学习模型扩展到多个图像类别?【英文标题】:HowtoextendabinarytransferlearningmodelwithPytorchtomultipleimagecategories?【发布时间】:2021-07-0813:46:43【问题描述】:我正在处理一些代码,这些代码使用ResNet-18模... 查看详情

在非 Spark 环境中加载 pyspark ML 模型

】在非Spark环境中加载pysparkML模型【英文标题】:LoadingapysparkMLmodelinanon-Sparkenvironment【发布时间】:2016-11-2108:11:49【问题描述】:我有兴趣在python中部署机器学习模型,因此可以通过对服务器的请求进行预测。我将创建一个Clouder... 查看详情

8.1pytorch模型迁移(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

pytorch迁移学习(transferlearning)代码详解(代码片段)

PyTorch迁移学习代码详解概述为什么使用迁移学习更好的结果节省时间加载模型ResNet152冻层实现模型初始化获取需更新参数训练模型获取数据完整代码概述迁移学习(TransferLearning)是把已学训练好的模型参数用作新训练模型的起始... 查看详情

8.1pytorch模型迁移(代码片段)

欢迎订阅本专栏:《PyTorch深度学习实践》订阅地址:https://blog.csdn.net/sinat_33761963/category_9720080.html第二章:认识Tensor的类型、创建、存储、api等,打好Tensor的基础,是进行PyTorch深度学习实践的重中之重的基础... 查看详情

pytorch学习笔记2.运行官网训练推理的入门示例(代码片段)

PyTorch学习笔记2.运行官网训练、推理的入门示例一、加载数据二、创建模型torch.nn.Sequential介绍:torch.nn.Linear3.torch.nn.ReLU三、调整模型参数四、保存模型五、加载模型一、加载数据首先引用必要的库:importtorchfromtorchimportnn... 查看详情

使用googlecolab时如何从googledrive中加载自定义的包模型和数据集(代码片段)

在Googlecolab上进行推理时,需要把数据和训练好的模型放到googledrive中,然后进行加载。首先,需要在googledrive中建一个目录存放模型,在这里,我选择默认的文件夹ColabNotebooks,为了方便起见,最好把模型和需要用到的自定义包... 查看详情

在 python 中加载 Tensorflow Lite 模型

】在python中加载TensorflowLite模型【英文标题】:LoadTensorflowLitemodelsinpython【发布时间】:2021-09-0822:23:26【问题描述】:我正在使用具有量化和浮点模型的TensorflowLite进行TinyML项目。在我的管道中,我使用tf.kerasAPI训练我的模型,然... 查看详情

pytorch迁移学习教程(计算机视觉应用实例)(代码片段)

文章目录迁移学习什么是迁移学习为何用迁移学习迁移学习的优点迁移学习的方法迁移方法的选择学习目标下载数据导入模块数据增强制作数据集数据加载器相关信息的打印训练数据可视化训练模型参数微调的方法特征提取的方... 查看详情

PyTorch:如何批量进行推理(并行推理)

】PyTorch:如何批量进行推理(并行推理)【英文标题】:PyTorch:Howtodoinferenceinbatches(inferenceinparallel)【发布时间】:2020-08-2618:31:02【问题描述】:如何在PyTorch中进行批量推理?如何并行进行推理以加快这部分代码的速度。我已经... 查看详情

pytorch教程-5:详解pytorch中加载数据的方法--datasetdataloadersamplercollate_fn等(代码片段)

*PyTorch教程系列:https://blog.csdn.net/qq_38962621/category_10652223.htmlPyTorch教程-5:详解PyTorch中加载数据的方法–Dataset、Dataloader、Sampler、collate_fn等数据读取是所有训练模型任务中最基础最重要的一步,PyTorch为数据集的读取... 查看详情