《昇思 25 天学习打卡营第 8 天 | 模型保存与加载使用静态图加速 》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp
签名:Sam9029


保存与加载模型没有多少内容,就把使用静态图加速一起看了

  • 先说说现有理解的概念

在学习深度学习的过程中,经常需要保存训练好的模型参数,以便进行微调或部署。
同时,为了提高模型运行效率,还需要了解如何使用静态图加速。

1. 保存与加载模型

保存与加载模型权重

  • 模型微调(Fine-tuning):在训练了一个基础模型后,我们可能希望在此基础上对特定任务进行微调。保存的模型权重可以作为预训练模型的起点,加载这些权重后,我们可以在此基础上继续训练,而无需从头开始。

文档没有讲 保存和加载模型权重 是有什么作用:网上说的也不清楚, 还是有些不理解

代码示例

首先,来看如何使用MindSpore框架保存和加载模型权重。

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# 保存模型
model = network()
mindspore.save_checkpoint(model, "model.ckpt")# 加载模型---保存和加载模型权重
model = network()
param_dict = mindspore.load_checkpoint("model.ckpt")
param_not_load, _ = mindspore.load_param_into_net(model, param_dict)
print(param_not_load)  # 如果为空列表,表示加载成功

在上述代码中,首先定义了一个简单的神经网络结构。使用mindspore.save_checkpoint函数,可以将模型的权重保存到文件中。加载模型时,需要先创建一个与保存时相同的模型实例,然后使用mindspore.load_checkpointmindspore.load_param_into_net函数来加载权重。

思考:保存和加载模型的过程对于模型的迁移和部署至关重要。在实际应用中,可能需要根据不同的需求,选择保存整个模型或是仅保存权重。

2. 使用静态图加速

静态图与动态图

在MindSpore中,有两种运行模式:动态图(PyNative模式)和静态图(Graph模式)。

  • 动态图模式:计算图的构建和计算同时发生,适合调试,但不利于优化。
  • 静态图模式:计算图的构建和计算分离,适合高性能场景,可以通过编译优化提高执行效率。

代码示例

以下是使用静态图模式加速模型的示例。

import numpy as np
import mindspore as ms
from mindspore import nn, Tensor# 设置为静态图模式
ms.set_context(mode=ms.GRAPH_MODE)class Network(nn.Cell):def init(self):super().init()self.flatten = nn.Flatten()self.dense_relu_sequential = nn.SequentialCell(nn.Dense(28*28, 512),nn.ReLU(),nn.Dense(512, 512),nn.ReLU(),nn.Dense(512, 10))model = Network()
input = Tensor(np.ones([64, 1, 28, 28]).astype(np.float32))
output = model(input)
print(output)

在静态图模式下,通过ms.set_context函数设置运行模式,然后定义网络结构。
由于静态图模式会在执行前对计算图进行优化,因此在网络结构固定且追求高性能的场景下,推荐使用静态图模式。

静态图模式虽然在性能上有优势,但牺牲了一定的灵活性。在实际开发中,需要根据项目需求和开发阶段来选择使用动态图还是静态图。

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

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

相关文章

snowflake 不再是个数据仓库公司了

标题先上结论,为啥这么认为,且听接下来道来。 snowflake 非常成功,开创了云数仓先河,至今在数仓架构上也是相对比较先进的,国内一堆模仿的公司,传统上我们会认为 snowflake 肯定是一家数据仓库公司。不过最…

网络攻防题录集

文章目录 第一章 网络攻防概述第二章 密码学第三章 网络协议脆弱性分析第四 自测题三第五章 自测题五第六章 自测题六第七章 自测题七第八章 自测题八第九章 自测题九第十章 自测题十第十一章 自测题十一第十二章 自测题十二第十三章 自测题十三 第一章 网络攻防概述 第一代安…

【Android面试八股文】App对内存是如何限制的?应该如何合理使用内存?

文章目录 一、内存管理概览二、垃圾回收三、共享内存四、分配与回收应用内存五、限制应用内存六、切换应用七、进程间的内存分配八、内存类型九、物理内存 虚拟内存9.1 物理内存9.2 虚拟内存9.3 虚拟内存的好处9.4 共享库内存十、VSS RSS PSS USS区别十一、Android系统的页面置…

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…

linux的Top学习

学习文档 https://www.cnblogs.com/liulianzhen99/articles/17638178.html TOP 问题 1:top 输出的利用率信息是如何计算出来的,它精确吗? top 命令访问 /proc/stat 获取各项 cpu 利用率使用值内核调用 stat_open 函数来处理对 /proc/sta…

AcWing 1256:扩展二叉树

【题目来源】https://www.acwing.com/problem/content/1258/【题目描述】 由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树,所以对二叉树做如下处理,将二叉树的空结点用 补齐,如图所示。 我们把这样处理后的二叉树称为原二叉树…

持续集成(Continuous Integration)

定义 持续集成(Continuous Integration,简称CI)是一种软件开发实践,开发者频繁地将代码集成到共享的代码库中,每次集成都通过自动化构建和测试来验证,从而尽早发现并修复错误。CI的目标是提高软件开发的质量…

[C++] 退出清理函数解读(exit、_exit、abort、atexit)

说明:在C中,exit、_exit(或_Exit)、abort和atexit是用于控制程序退出和清理的标准库函数。下面是对这些函数的详细解读: exit 函数原型:void exit(int status);作用:exit函数用于正常退出程序…

基于Java的早教系统的设计与实现【附源码】

摘要:随着家长对孩子教育的重视程度越来越高,早教也越来越受家长的青睐,因为它可以有针对性地单独授课,能显著提高学生学习的效果。同时互联网的兴起,对教育的形式也产生了重大影响,为此基于B/S的早教平台应…

零知识证明技术:隐私保护的利器

在当今信息时代,数据安全和隐私保护的重要性日益凸显。随着技术的发展,密码学在保障信息安全方面发挥着越来越重要的作用。其中,零知识证明技术作为一种新兴的密码学方法,为隐私保护提供了强有力的支持。本文将简要介绍零知识证明…

3.js - premultiplyAlpha

你瞅啥啊!!! 先看效果图吧 代码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/ex…

c#与倍福Plc通信

bcdedit /set hypervisorlaunchtype off

pycharm中新建的临时python文件存放在哪里?

在pycharm中建立的临时python文件,从哪里可以找到呢? 1.我们打开cmd窗口,进入根目录,用dos命令“dir scratch*.py/a/s”进行查找,发现这些临时文件存放在Roaming\JetBrains\PyCharmCE2022.2\scratches 的目录里面 2.…

base64字符串空格问题

客户端使用的Content-Type为application/x-www-form-urlencoded时,字符串中出现了空格,base64解码时出错了,因为原来的字符有号, Spring Boot 对于Content-Type为application/x-www-form-urlencoded的HTTP请求,默认情…

我全都要,全网聚合神器!绝了!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 现在有不少开发者都会以“壳源”的方式(如TVBox、阅读APP等),为用户提供了更为灵活性的选择。 而今天给大家安利的是一款“壳源”的聚合神器&#…

Profibus DP主站转Modbus网关连接智能化电表通讯

Profibus DP主站转Modbus网关(XD-MDPBM20),是实现不同工业通信协议之间互联互通的设备,主要将Profibus DP协议转换为Modbus协议,实现数据的双向传输。通过Profibus DP主站转Modbus网关(XD-MDPBM20&#xff…

记一次阿里云服务器java应用无法响应且无法远程连接的问题排查

问题表现 java服务无响应,无法远程链接到服务器。 今天中午12点多,应用直接崩溃。后续进入到服务器,发现java进程都不在了, 排查过程 先安装atop工具 安装、配置并使用atop监控工具 等下次再出现时看相关时间点日志&#xff…

编译原理3-自底向上的语法分析

自底向上分析 ,就是自左至右扫描输入串,自底向上进 行分析;通过反复查找当前句型的 句柄, 并使 用产生式规则 将找到的句柄归约为相应的非终结符 。逐步进行“ 归约 ”,直到至文法的开始符号; 对于规范推导…

使用华为物联网平台API联机设备[C#灯带开发]

开发智能灯带涉及到物联网、嵌入式系统和应用软件的结合。下面我来为你提供一个简单的示例,展示如何通过华为物联网平台来控制智能灯带的开关和颜色。 示例:控制智能灯带 准备工作 注册华为云账号,并创建物联网平台实例。在华为物联网平台…

现代工作场所中的睡岗检测算法应用

在现代职场环境中,员工的工作状态直接影响到公司的整体效益。睡岗现象,即员工在工作时间内打瞌睡或睡觉,不仅降低了生产力,还可能带来安全隐患。因此,如何有效地检测和预防睡岗行为成为了企业管理中的一个重要课题。随…