pytorch保存、加载和解析模型权重

这篇具有很好参考价值的文章主要介绍了pytorch保存、加载和解析模型权重。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、模型保存和加载

         主要有两种情况:一是仅保存参数,二是保存参数及模型结构。

保存参数:

         torch.save(net.state_dict())

加载参数(加载参数前需要先实例化模型):

         param = torch.load('param.pth')

         net.load_state_dict(param)

保存模型结构和参数:

         torch.save(net)

加载模型:

         net = torch.load('model.pt')

2、解析模型权重文件

         当加载某个模型文件后,如果需要查看模型中的算子和参数,可以将模型解析为字典,然后逐一打印。

以lent5为例,将lenet5模型保存为权重文件,然后重新加载权重文件并解析其中每一层的参数。

参考代码:

def pytorch_params(pth_file):
    par_dict = torch.load(pth_file, map_location='cpu')
    for name in par_dict:
        parameter = par_dict[name]
        print(name, parameter.numpy().shape)

        以上代码是加载的权重文件,文件只有参数,没有模型结构,如果加载的是包含模型结构的权重文件,可以做如下修改:

def pytorch_params(pt_file):
    net = torch.load(pt_file, map_location='cpu')
	par_dict = net.state_dict()
    for name in par_dict:
        parameter = par_dict[name]
        print(name, parameter.numpy().shape)

解析结果:

pytorch保存、加载和解析模型权重,pytorch,人工智能,python

3、加载自定义参数

        某些情况下可能需要对某个算子进行单独调试,如加载特定参数进行推理计算,用来确定输出结果符合预期。以Conv2d算子为例进行测试,首先设定卷积层输入为3,输出为3,卷积核为3*3,偏置bias为False。通过numpy随机一个3*3*3*3的矩阵作为自定义参数,将参数转换为Tensor以后,添加到dict中,然后通过load_state_dict将参数加载进网络。

参考脚本:

 文章来源地址https://www.toymoban.com/news/detail-573069.html

import torch
import torch.nn as nn
import numpy as np
net = nn.Conv2d(3, 3, kernel_size=(3, 3), padding=1, bias=False)
param = np.random.random((3, 3, 3, 3))
param = param.astype(np.float32)
torch_param = {'weight': torch.Tensor(param)}
net.load_state_dict(torch_param)
net.eval()
data = np.random.random((1, 3, 16, 16))
data = data.astype(np.float32)
result = net(torch.Tensor(data))
print(result)

到了这里,关于pytorch保存、加载和解析模型权重的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pytorch】使用训练好后的模型权重,在验证集上输出分类的混淆矩阵并保存错误图片

    在机器学习领域,混淆矩阵是一个非常有用的指标,它可以帮助我们更好地理解模型在验证集上的表现。本文介绍了如何使用pytorch框架,利用训练好后的模型权重,在验证集上输出分类的混淆矩阵,并保存错误图片的方法。 首先,我们需要准备一个pytorch框架的模型,并将模

    2024年02月13日
    浏览(39)
  • PyTorch模型的保存与加载

    载入muti-GPU模型: 载入muti-GPU权重: 载入CPU权重: 模型保存的格式: pytorch中最常见的模型保存使用 .pt 或者是 .pth 作为模型文件扩展名,其他方式还有.t7/.pkl格式,t7文件是沿用torch7中读取模型权重的方式,而在keras中则是使用.h5文件 .pth 文件基本信息 四个键值: model(Ord

    2023年04月21日
    浏览(38)
  • 现有模型的保存与加载(PyTorch版)

    我们以VGG16网络为例,来说明现有模型的保存与加载操作。 保存与加载方式均有两种,接下来我们分别来学习这两种方式。 注意:保存与加载不在同一个py文件中,我们设定保存操作在save.py文件中,而加载操作在load.py文件中。 保存模型的两种方式如下代码所示,第一种为既

    2024年02月09日
    浏览(45)
  • pytorch11:模型加载与保存、finetune迁移训练

    往期回顾 pytorch01:概念、张量操作、线性回归与逻辑回归 pytorch02:数据读取DataLoader与Dataset、数据预处理transform pytorch03:transforms常见数据增强操作 pytorch04:网络模型创建 pytorch05:卷积、池化、激活 pytorch06:权重初始化 pytorch07:损失函数与优化器 pytorch08:学习率调整策略

    2024年02月01日
    浏览(48)
  • 人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及预测。文章将提供完整的代码实现。 ELMo模型简介 数据

    2024年02月07日
    浏览(67)
  • 人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型

    大家好,我是微学AI,今天给大家介绍一下人工智能(Pytorch)搭建模型6-使用Pytorch搭建卷积神经网络ResNet模型,在本文中,我们将学习如何使用PyTorch搭建卷积神经网络ResNet模型,并在生成的假数据上进行训练和测试。本文将涵盖这些内容:ResNet模型简介、ResNet模型结构、生成假

    2024年02月06日
    浏览(78)
  • 利用pytorch自定义CNN网络(五):保存、加载自定义模型【转载】

    本文转载自: PyTorch | 保存和加载模型 本文主要介绍如何加载和保存 PyTorch 的模型。这里主要有三个核心函数: torch.save :把序列化的对象保存到硬盘。它利用了 Python 的 pickle 来实现序列化。模型、张量以及字典都可以用该函数进行保存; torch.load:采用 pickle 将反序列化的

    2024年02月13日
    浏览(41)
  • 人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型,利用正态分布数据训练该模型

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型,利用正态分布数据训练该模型。本文将介绍一种基于PyTorch的BiGRU模型应用项目。我们将首先解释BiGRU模型的原理,然后使用PyTorch搭建模型,并提供模型代码和数据样例。接下来,我们将

    2024年02月09日
    浏览(68)
  • 人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型14-pytorch搭建Siamese Network模型(孪生网络),实现模型的训练与预测。孪生网络是一种用于度量学习(Metric Learning)和比较学习(Comparison Learning)的深度神经网络模型。它主要用于学习将两个输入样本映射到一个

    2024年02月11日
    浏览(143)
  • 人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型,调通模型的训练与测试

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型13-pytorch搭建RBM(受限玻尔兹曼机)模型,调通模型的训练与测试。RBM(受限玻尔兹曼机)可以在没有人工标注的情况下对数据进行学习。其原理类似于我们人类学习的过程,即通过观察、感知和记忆不同事物的特点

    2024年02月10日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包