《昇思25天学习打卡营第9天|保存与加载》

文章目录

  • 今日所学:
  • 一、构建与准备
  • 二、保存和加载模型权重
  • 三、保存和加载MindIR
  • 总结


今日所学:

在上一章节主要学习了如何调整超参数以进行网络模型训练。在这一过程中,我们通常会想要保存一些中间或最终的结果,以便进行后续的模型微调和推理部署。在本章节,我进一步学习了如何保存和加载模型。


一、构建与准备

首先因为我们已经预装了mindspore,如果还没有安装的可以参考:《昇思25天学习打卡营第2天|快速入门》
引用库和初步构建代码如下:

import numpy as np
import mindspore
from mindspore import nn
from mindspore import Tensordef network():model = nn.SequentialCell(nn.Flatten(),nn.Dense(28*28, 512),nn.ReLU(),nn.Dense(512, 512),nn.ReLU(),nn.Dense(512, 10))return model

二、保存和加载模型权重

首先学习了保存和加载模型权重,其中保存模型使用了Mindspore框架的save_checkpoint接口,传入网络和指定的保存路径,代码如下:

model = network()
mindspore.save_checkpoint(model, "model.ckpt")

然后学习了加载模型权重,先创建相同模型的实例,然后使用load_checkpoint和load_param_into_net方法来加载参数,代码如下:

model = network()
param_dict = mindspore.load_checkpoint("model.ckpt")
param_not_load, _ = mindspore.load_param_into_net(model, param_dict)
print(param_not_load)

param_not_load是未被加载的参数列表,为空时代表所有参数均加载成功。

三、保存和加载MindIR

MindSpore除了提供了Checkpoint功能外,还提供了一种统一的中间表示(Intermediate Representation,IR)用于云端(训练)和端侧(推理)。这意味着我们可以使用export接口直接将模型保存为MindIR格式。代码如下:

model = network()
inputs = Tensor(np.ones([1, 1, 28, 28]).astype(np.float32))
mindspore.export(model, inputs, file_name="model", file_format="MINDIR")

nn.GraphCell是专为图模式设计的。这意味着在使用MindSpore框架时,我们可以将已经保存的MindIR模型通过load接口轻松加载,并通过传入nn.GraphCell进行推理。但值得注意的是,为了进行这个过程,我们需要先定义输入Tensor以获取输入shape,因为MindIR保存了Checkpoint和模型结构,代码如下:

mindspore.set_context(mode=mindspore.GRAPH_MODE)
​
graph = mindspore.load("model.mindir")
model = nn.GraphCell(graph)
outputs = model(inputs)
print(outputs.shape)

在这里插入图片描述

总结

在今天的学习中,我深入了解了如何在模型训练过程中保存和加载模型。我学习了如何利用MindSpore的save_checkpoint接口将模型保存下来,然后通过load_checkpoint和load_param_into_net方法将参数加载到模型中。此外,我还了解了MindSpore提供的统一的中间表示(Intermediate Representation,IR)功能,学习了如何将模型直接保存为MindIR格式,并在需要时加载这些模型进行推理。我还学习了如何使用nn.GraphCell,这是一种专为图模式设计的接口,可以便捷地加载保存的MindIR模型,并进行推理。总的来说,我了解了如何有效地保存训练好的模型,并在需要时加载它们进行后续的微调和推理部署,这对于深度学习的实践非常重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift Core Data 分阶段迁移

文章目录 前言什么是分阶段迁移?提供一些背景信息创建迁移管理器设置使用 Core Data 栈。总结 前言 在这之前,我发布了一篇文章,在其中解释了如何使用映射模型和自定义迁移策略执行复杂的 Core Data 迁移。虽然这种方法性能良好且运行良好&a…

大模型思维链(Chain-of-Thought)技术原理

大模型思维链(Chain-of-Thought)技术原理 NLP中 大语言模型LLM中的思维链 Chain-of-Thought(CoT) GoT_cot思维链-CSDN博客

深入探索 Yarn 脚本:发掘自动化构建的潜力

引言 Yarn 是一个现代的包管理工具,它提供了快速、可靠和安全的依赖管理方式。除了包管理,Yarn 还允许开发者通过脚本来自动化构建过程,从而提高开发效率。本文将详细介绍如何查看所有可用的 Yarn 脚本,并展示如何利用这些脚本来…

【Linux进阶】文件和目录的默认权限与隐藏权限

1.文件默认权限:umask OK,那么现在我们知道如何建立或是改变一个目录或文件的属性了,不过,你知道当你建立一个新的文件或目录时,它的默认权限会是什么吗? 呵呵,那就与umask这个玩意儿有关了&…

Vue85-Vuex的求和案例

一、需求 二、开发 2-1、index.js中vuex的代码 注意: 书写格式:actions中的函数名用小写!mutations中的函数名,用大写。 注意: 2-2、组件count.vue中的代码 2-3、代码优化 三、actions中的context参数 此写法的后…

ManageTreeXml类封装QTreeWidget 树形节点信息

QDomDocument 运用说明 生成示例头文件源文件 生成示例 <?xml version"1.0" encoding"UTF-8"?> <sdk guid"##GUID"><in method"SetModbusParaInfo"><Device name"Device1"><mode updateCycUn…

Python基于PyQt5和卷积神经网络分类模型(ResNet50分类算法)实现生活垃圾分类系统GUI界面项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 在当今社会&#xff0c;随着人们对环境保护意识的增强以及科技的快速发展&#xff0c;智能化的垃圾分类…

EasyBoss ERP移动端上线数据分析模块,随时查Shopee/TikTok本土店数据

前段时间&#xff0c;EasyBoss ERP出了个超酷炫的数字大屏功能&#xff0c;广受好评。 但是也有老板说&#xff0c;电脑端看数据不够方便啊&#xff0c;你们EasyBoss有本事上个手机就能看数据的功能啊&#xff01; 说干就干&#xff0c;直接满足你们的需求&#xff01; 于是在…

day02-统计数据

numpy统计学 1.求平均值[数组名.mean()/np.mean(数组名)] m1 np.arange(20).reshape((4,5))m1.mean() #9.5若想要求某一维的平均值&#xff0c;设置axis参数&#xff0c;多维数组元素指定&#xff1a; axis 0&#xff0c;将从上往下计算。axis 1&#xff0c;将从左往右计算…

EtherCAT主站IGH-- 7 -- IGH之dict_request.h/c文件解析

EtherCAT主站IGH-- 7 -- IGH之dict_request.h/c文件解析 0 预览一 该文件功能`dict_request.c` 文件功能函数预览二 函数功能介绍1. `ec_dict_request_init`2. `ec_dict_request_read`详细分析三 h文件翻译四 c文件翻译该文档修改记录:总结0 预览 一 该文件功能 该文件定义了…

44 mysql batch insert 的实现

前言 我们这里 来探讨一下 insert into $fields values ($values1), ($values2), ($values3); 的相关实现, 然后 大致来看一下 为什么 他能这么快 按照 我的思考, 应该里里面有 批量插入才对, 但是 调试结果 发现令我有一些意外 呵呵 果然 只有调试才是唯一的真理 相比于 …

pyecharts可视化案例大全(1~10)

pyecharts可视化案例大全 一、堆叠柱状图二、关闭坐标轴显示三、自定义坐标轴标签文本四、更改坐标轴数据类型五、双Y轴【直方图&折线图】六、直方图——双Y轴七、折线图——双X轴八、图例选择设置单选九、缩略轴——inside组件十、缩略轴——slider组件一、堆叠柱状图 不…

Linux的Socket开发概述

套接字&#xff08;socket&#xff09;是 Linux 下的一种进程间通信机制&#xff08;socket IPC&#xff09;&#xff0c;在前面的内容中已经给大家提到过&#xff0c;使用 socket IPC 可以使得在不同主机上的应用程序之间进行通信&#xff08;网络通信&#xff09;&#xff0c…

MATLAB和Python发那科ABB库卡史陶比尔工业机器人模拟示教框架

&#x1f3af;要点 &#x1f3af;模拟工业机器人 | &#x1f3af;可视化机器人DH 参数&#xff0c;机器人三维视图 | &#x1f3af;绘制观察运动时关节坐标位置、速度和加速度 | &#x1f3af;绘制每个关节处的扭矩和力 | &#x1f3af;图形界面示教机器人 | &#x1f3af;工业…

Qt入门小项目 | WPS tab页面(无边框窗口综合应用)

文章目录 一、手写代码实现WPS tab页面 一、手写代码实现WPS tab页面 实现类似WPS tab效果&#xff0c;具体包含&#xff1a; 自定义标题栏&#xff1a;最大、最小、关闭在QTabWidget的tab上增加控件在QTabWidget的tab上右键菜单可拖拽移动可拉伸窗口双击标题栏在最大与正常间…

centos部署Nginx并配置网页进行访问

1. 安装 Nginx 安装 EPEL 仓库 EPEL (Extra Packages for Enterprise Linux) 仓库提供了许多不在 CentOS 基础仓库中的软件包&#xff0c;包括 Nginx。 sudo yum install epel-release -y#安装 Nginx sudo yum install nginx -y 2. 启动 Nginx 并设置开机启动 sudo system…

ECCV2024|AIGC(图像生成,视频生成,3D生成等)相关论文汇总(附论文链接/开源代码)【持续更新】

ECCV2024&#xff5c;AIGC相关论文汇总&#xff08;如果觉得有帮助&#xff0c;欢迎点赞和收藏&#xff09; Awesome-ECCV2024-AIGC1.图像生成(Image Generation/Image Synthesis)Accelerating Diffusion Sampling with Optimized Time StepsAnyControl: Create Your Artwork w…

Objection 对命令的批量操作

假定现在需要对好多不同的类进行批量hook&#xff0c;逐个hook非常繁琐&#xff0c;那么可以要将这些hook的类放到一个文件里&#xff0c;并且在这些类的前面加上hook命令&#xff0c;内容如下 使用如下命令执行该文件中的命令 objection -g 测试 explore -c d:/hookData/toHoo…

git上传本地单独修改的文件_git 只推送变化的文件

git上传本地单独修改的文件_git 只推送变化的文件-CSDN博客 只推送本地修改的文件&#xff0c;这篇文章方法可行。

昇思25天学习打卡营第13天|ResNet50图像分类

1. 学习内容复盘 图像分类是最基础的计算机视觉应用&#xff0c;属于有监督学习类别&#xff0c;如给定一张图像(猫、狗、飞机、汽车等等)&#xff0c;判断图像所属的类别。本章将介绍使用ResNet50网络对CIFAR-10数据集进行分类。 ResNet网络介绍 ResNet50网络是2015年由微软…