当前位置: 首页 > news >正文

pytorch框架保存和加载模型

PyTorch 中,有几种常见的方法来保存和加载模型,具体方法取决于你想保存什么内容(例如,只保存模型的权重,还是保存整个模型)。下面我将介绍几种常见的保存和加载模型的方法。

1、保存和加载模型的 state_dict

  • state_dict 是一个简单的 Python 字典对象,它将每一层的参数映射到其对应的张量(tensor)。这是最推荐的保存方式,因为它只保存模型的权重和参数,而不依赖于模型的代码结构。
  • 保存模型的 state_dict
import torch
import torch.nn as nn# 假设我们有一个模型
model = nn.Linear(10, 2)# 保存模型的 state_dict
torch.save(model.state_dict(), 'model.pth')
  • 加载模型的 state_dict
import torch
import torch.nn as nn# 假设我们有相同结构的模型
model = nn.Linear(10, 2)# 加载 state_dict
model.load_state_dict(torch.load('model.pth'))# 使用模型
model.eval()

2、保存和加载整个模型

  • 这种方法不仅保存了模型的权重和参数,还保存了模型的结构。因此,整个模型在加载时不需要再定义模型结构。尽管这提供了更大的便利性,但也有一些缺点,比如文件可能与代码过于耦合(会保存模型的类和结构,如果代码发生变化可能无法加载)。
  • 保存整个模型:
import torch
import torch.nn as nn# 假设我们有一个模型
model = nn.Linear(10, 2)# 保存整个模型
torch.save(model, 'model_entire.pth')
  • 加载整个模型:
import torch# 加载整个模型
model = torch.load('model_entire.pth')# 使用模型
model.eval()

3、保存和加载 checkpoint(保存更多的训练状态)

  • 如果你希望保存更多的训练信息,例如优化器状态、当前的 epoch 以及训练损失等,以便后续继续训练,可以保存一个包含多个内容的字典。
  • 保存 checkpoint
import torch
import torch.nn as nn
import torch.optim as optim# 假设我们有一个模型和优化器
model = nn.Linear(10, 2)
optimizer = optim.SGD(model.parameters(), lr=0.001)# 保存 checkpoint
checkpoint = {'epoch': 10,'model_state_dict': model.state_dict(),'optimizer_state_dict': optimizer.state_dict(),'loss': 0.5,
}torch.save(checkpoint, 'checkpoint.pth')
  • 加载 checkpoint
import torch
import torch.nn as nn
import torch.optim as optim# 假设我们有相同结构的模型和优化器
model = nn.Linear(10, 2)
optimizer = optim.SGD(model.parameters(), lr=0.001)# 加载 checkpoint
checkpoint = torch.load('checkpoint.pth')
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']# 恢复训练
model.train()

4、动态量化后的模型保存与加载

  • 如果你对模型进行了量化(如动态量化),你可能需要保存量化后的模型。保存和加载方法与保存 state_dict 类似。
  • 动态量化模型:
import torch
import torch.nn as nn# 假设我们有一个模型
model = nn.Linear(10, 2)# 进行动态量化
quantized_model = torch.quantization.quantize_dynamic(model, {nn.Linear}, dtype=torch.qint8
)# 保存量化后的模型
torch.save(quantized_model.state_dict(), 'quantized_model.pth')
  • 加载量化模型:
import torch
import torch.nn as nn# 重新定义与量化前相同的模型结构
model = nn.Linear(10, 2)# 加载量化后的模型权重
model.load_state_dict(torch.load('quantized_model.pth'))
model.eval()

总结

  1. 保存 state_dict:最常用和推荐的方式,只保存模型参数,需手动重新定义模型结构后加载。
  2. 保存整个模型:保存模型结构和参数,一次性加载整个模型,但依赖于模型的代码结构。
  3. 保存 checkpoint:适合长时间训练的场景,保存更多状态以便后续继续训练。
  4. 保存量化后的模型:用于保存经过量化处理的模型,节省存储空间并提升推理速度。

不同的保存方式适合不同的使用场景,推荐使用 state_dict 来保存模型权重,尤其是在需要在不同环境或版本中加载模型时。

相关文章:

pytorch框架保存和加载模型

在 PyTorch 中,有几种常见的方法来保存和加载模型,具体方法取决于你想保存什么内容(例如,只保存模型的权重,还是保存整个模型)。下面我将介绍几种常见的保存和加载模型的方法。 1、保存和加载模型的 state…...

开发输出防护栏以检测GPT-4o幻觉

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

代码复现,代码改进,算法复现,模型复现

目前空闲可接硕士,博士,代码复现,改进代码,文献复现,算法复现,模型复现,文章复现,科研复现,可定制创新点,对比,模块,创新思路&#xf…...

基于STM32开发的智能机器人系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 自动导航机器人家用服务机器人常见问题及解决方案 常见问题解决方案结论 1. 引言 智能机器人通过整合传感器、控制器和执行机构,能够自主完成环境感…...

【数据结构题目】循环队列,以及队列实现栈的模拟

前言: 🌟🌟Hello家人们,这期讲解数据结构队列的基础知识,希望你能帮到屏幕前的你。 📚️上期博客在这里:http://t.csdnimg.cn/oOkvk 📚️感兴趣的小伙伴看一看小编主页:G…...

大数据CloudSim应用实践:基于CloudSimExamle6.java修改(超详细教程)

文章目录 大数据CloudSim应用实践:基于CloudSimExamle6.java修改(超详细教程)1 准备1.1 操作系统1.2 软件 2 安装JDK2.1 安装JDK 3 配置Eclipse集成开发环境3.1 启动Eclipse3.2 配置Java运行时环境JRE 4 创建Java项目4.1 创建项目4.2 导入jar…...

完美解决浏览器的输入框自动填入时,黄色背景问题,以及图标被遮住问题(最新)

用图说话↓↓↓ 首先用代码解决黄色背景问题,box-shadow颜色设置透明即可,延时渲染时间可修改为更久 :deep(input:-webkit-autofill) {box-shadow: 0 0 0 1000px transparent !important;/* 浏览器记住密码的底色的颜色 */-webkit-text-fill-color: #f…...

C 语言中的头文件

1、C 语言中 include <> 与include “” 的区别? #include < > 引用的是编译器的类库路径里面的头文件。 #include " " 引用的是你程序目录的相对路径中的头文件&#xff0c;如果在程序目录没有找到引用的头文件则到编译器的类库路径的目录下找该头文…...

数据结构复杂度

文章目录 一. 数据结构前言1.1 数据结构1.2 算法 二. 算法效率2.1 时间复杂度2.1.1 T(N)函数式2.1.2 大O的渐进表示法 2.2 空间复杂度2.3 常见复杂度比较 2.3 复杂度算法题1.2. 一. 数据结构前言 1.1 数据结构 什么是数据结构呢&#xff1f;打开一个人的主页&#xff0c;有很…...

MySQL基础篇

一、MySQL概述 MySQL是一个数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;属于Oracle推出的产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在WEB应用方面&#xff0c;MySQL是最好的RDBMS&#xff08;关系数据库管理系统&#xff09; &#xff0c…...

详解C++中的四种强制转换reinterpret_cast / const_cast / static_cast / dynamic_cast

目录 1.reinterpret_cast 2.const_cast 3.static_cast 4.dynamic_cast 例子 C中存在四种强制转换&#xff1a;reinterpret_cast / const_cast / static_cast / dynamic_cast 1.reinterpret_cast 格式 &#xff1a; reinterpret_cast<type_id> (expression) 用于类型…...

Word中加载Mathtype后粘贴复制快捷键(Ctrl+C/V)不能使用

操作环境 windows 11操作系统 word版本2021 mathtype版本7.4 这个问题只出现在word中&#xff0c;在excel和ppt中都不存在这个问题&#xff0c;而且之前在另一台电脑中使用word2016版本并没有这种问题的&#xff0c;然后网上搜了一下有不少人有这种问题&#xff0c;word直接取…...

Linux硬件-bios

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 在Linux的服务器领域&#xff0c;我们能接触的到硬件其实挺多的&#xff0c;但是在这些硬件我们根据我们的需要去使用的时候…...

VisionPro二次开发学习笔记12-使用CogToolGroup控件进行图像检测

本示例演示了如何通过图像数据库使用 CogImageFileTool&#xff0c;并将其放入 CogToolGroup 中&#xff0c;对于数据库中的每个图像运行一次检测. 当用户按下 RunTest 按钮时&#xff0c;程序执行以下操作&#xff1a; 如果工具组中没有 CogImageFileTools&#xff0c;它将显…...

mfc140u.dll丢失的科学修复手段,简单又方便的mfc140u.dll修复

遇到 "缺失 mfc140u.dll 文件" 的提示时可能会让你疑惑&#xff0c;但不用担心。这个文件是 Microsoft Visual C 2015 的重要组成部分&#xff0c;对运行特定程序非常关键。幸运的是&#xff0c;解决这一问题并不难。本文将简单指导你如何恢复或修复丢失的 mfc140u.d…...

RabbitMQ、Kafka对比(超详细),Kafka、RabbitMQ、RocketMQ的区别

文章目录 一、kafka和rabbitmq全面对比分析1.1 简介1.2 kafka和rabbitmq全面对比分析1.3 影响因素 二、RabbitMQ、Kafka主要区别2.1 详解/主要区别2.1.1 设计目标和适用场景2.1.2 架构模型方面2.1.3 吞吐量和性能2.1.4 消息存储和持久化2.1.5 消息传递保证2.1.6 集群负载均衡方…...

【案例35】销售订单公式问题导致系统宕机

问题现象 经过顾问反馈&#xff0c;发现系统现在出现卡顿&#xff0c;NCC一直在转圈。 问题分析 远程排查&#xff0c;发现在服务器从机上defalut-7发生了内存溢出&#xff0c;宕机。 生成了宕机日志。分析结果如下&#xff1a; 销售订单相关操作&#xff0c;vo太多了导致…...

编程-设计模式 4:建造者模式

设计模式 4&#xff1a;建造者模式 定义与目的 定义&#xff1a;建造者模式将一个复杂对象的构建与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。目的&#xff1a;该模式主要用于创建复杂对象时&#xff0c;这些对象的创建过程可能涉及多个步骤&#xff0c;…...

百度文心一言API调用,千帆大模型获取API Key和API Secret图解

百度文心一言大模型调用教程&#xff0c;获取文心一言API Key和API Secret的方法&#xff0c;码笔记mabiji.com告诉大家在百度智能云的千帆大模型平台创建应用&#xff0c;即可获取文心一言的API Key和API Secret&#xff0c;详细流程如下&#xff1a; 1、在百度智能云的千帆大…...

kafka下载|安装

1、下载kafka https://kafka.apache.org/downloads 2、安装kafka 解压下载的kafka安装包即可 tar -xvf kafka_2.13-3.7.0.tgz -C /usr/local/3、查看kafka目录 bin目录&#xff1a;存放了脚本 config目录&#xff1a;主要存放了配置文件...

别再到处找瓦片服务地址了!手把手教你用OpenLayers 7.x集成天地图和高德地图(附完整代码)

OpenLayers 7.x实战&#xff1a;深度解析天地图与高德地图集成方案 第一次接触地图开发时&#xff0c;最让我头疼的不是写代码&#xff0c;而是找不到正确的瓦片服务地址。那些看似简单的URL背后&#xff0c;藏着各种参数玄机——为什么别人的地图能正常显示中文标注&#xff1…...

Palworld存档工具终极指南:掌握游戏数据编辑的专业方法

Palworld存档工具终极指南&#xff1a;掌握游戏数据编辑的专业方法 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾想过深入Palworld游戏…...

Cursor Pro免费激活终极指南:突破AI编程助手限制的完整技术方案

Cursor Pro免费激活终极指南&#xff1a;突破AI编程助手限制的完整技术方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached…...

不升级系统也能用VSCode远程开发:老版本Linux的glibc兼容方案大全

老版本Linux系统下VSCode远程开发的五大兼容方案 在企业开发环境中&#xff0c;生产服务器往往运行着CentOS 7或Ubuntu 18.04等长期支持版本&#xff0c;这些系统的glibc库版本可能无法满足最新VSCode远程开发组件的需求。本文将深入探讨五种无需升级系统即可解决glibc兼容性问…...

效率提升实测:OpenClaw+百川2-13B-4bits将周报时间从2小时缩短到15分钟

效率提升实测&#xff1a;OpenClaw百川2-13B-4bits将周报时间从2小时缩短到15分钟 1. 为什么我要折腾自动化周报 每周五下午&#xff0c;我的日历上总有一个雷打不动的"周报时间"。这个两小时的"酷刑"包括&#xff1a;翻遍Git提交记录、整理会议纪要碎片…...

EF Core 拦截器实战:SaveChangesInterceptor、CommandInterceptor 与审计落地

一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作&#xff0c;需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释&#xff08;因业务实际需要存储大数值关联字段&#xff09;。 表的核心特性为Java 多线程密集读写&#xff0c;业务请求持续高…...

WordPress开发工具链配置:IDE集成与CI/CD自动化

WordPress开发工具链配置&#xff1a;IDE集成与CI/CD自动化 【免费下载链接】WordPress-Coding-Standards PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions 项目地址: https://gitcode.com/gh_mirrors/wo/WordPress-Coding-Standards WordPres…...

nli-distilroberta-base精彩案例:开源项目README与代码功能逻辑一致性验证

nli-distilroberta-base精彩案例&#xff1a;开源项目README与代码功能逻辑一致性验证 1. 项目概述 在开源项目开发中&#xff0c;README文档与代码实现的一致性至关重要。nli-distilroberta-base作为基于DistilRoBERTa的自然语言推理(NLI)Web服务&#xff0c;为解决这一问题…...

Swagger Client 与微服务架构:如何管理多个 API 端点的终极方案

Swagger Client 与微服务架构&#xff1a;如何管理多个 API 端点的终极方案 【免费下载链接】swagger-js Javascript library to connect to swagger-enabled APIs via browser or nodejs 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-js 在现代微服务架构中&a…...

RK3568的Type-C接口设计,不止正反插:EMC防护、限流与关机遥控的细节实战

RK3568 Type-C接口设计实战&#xff1a;从EMC防护到关机遥控的进阶技巧 Type-C接口早已成为现代电子设备的标配&#xff0c;但真正将其设计得既可靠又智能却并非易事。对于基于RK3568平台的嵌入式设备开发者而言&#xff0c;一个优秀的Type-C方案不仅需要解决正反插这种基础问题…...