【MindSpore两日训练营第五期笔记】导出MindIR格式模型

本文主要是介绍【MindSpore两日训练营第五期笔记】导出MindIR格式模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、MindIR 概述

MindSpore通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件
与硬件平台解耦,实现一次训练多次部署。
MindIR作为MindSpore的统一模型文件,同时存储了网络结构和权重参数值。同时支持
部署到云端Serving和端侧Lite平台执行推理任务。
同一个MindIR文件支持多种硬件形态的部署:
- Serving部署推理
- 端侧Lite推理部署

二、名词解释

Checkpoint
• 采用了Protocol Buffers格式,存储了网络中所有的参数值。
• 一般用于训练任务中断后恢复训练,或训练后的微调(Fine Tune)任务。
•MindIR
• 全称MindSpore IR,是MindSpore的一种基于图表示的函数式IR,定义了可扩展的图
结构以及算子的IR表示。
• 它消除了不同后端的模型差异,一般用于跨硬件平台执行推理任务。
•ONNX
• 全称Open Neural Network Exchange,是一种针对机器学习模型的通用表达。
• 一般用于不同框架间的模型迁移或在推理引擎(TensorRT)上使用。
•AIR
• 全称Ascend Intermediate Representation,是华为定义的针对机器学习所设计的开放式
文件格式。
• 它能更好地适应华为AI处理器,一般用于Ascend 310上执行推理任务。

三、导出LeNet网络的MindIR格式模型

1.训练LeNet模型生成checkpoint

LeNet训练代码选用MindSpore官方代码仓中modelzool中的代码

地址:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet

2.MNIST数据下载地址

1)官方下载地址:http://yann.lecun.com/exdb/mnist/

2)网盘下载:链接: https://pan.baidu.com/s/1zX-OwL8bOgq4dhEuaRj2Xg 提取码: zew6

MNIST数据集下载完成后解压到代码根目录下

3.执行训练命令

python train.py --data_path ./MNIST_DATA/ --ckpt_path=./checkpoint/ --device_target Ascend

注:我使用的是昇腾平台进行模型训练,如果使用CPU或者GPU进行训练的话device_target后面改为对应的就好

当屏幕出现epoch、loss等数值时模型就开始进行训练了

4.得到checkpoint

当模型训练参数中指定的ckpt_path文件夹中出现ckpt文件就代表训练成功了。接下去我们可以选择一个ckpt文件进行转换mindir格式。这里我选择checkpoint_lenet-10_1875.ckpt

5.编写模型转换代码

import numpy as np
from mindspore import Tensor, export, load_checkpoint, load_param_into_net
from src.lenet import LeNet5lenet = LeNet5()
# load the parameter into net
load_checkpoint("./checkpoint/checkpoint_lenet-10_1875.ckpt", net=lenet)  #checkpoint_lenet-10_1875.ckpt更换成对应所需要转换的ckpt文件
input = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32)  #Lenet模型的size为32,1,32,32
export(lenet, Tensor(input), file_name='lenet-10_1875', file_format='MINDIR') #file_name指定转换后文件的文件名

6.执行模型转换代码

python lenet_mindr.py

执行完毕后查看代码根目录下如果存在前面我们指定的lenet-10_1875.mindir文件的话就代表模型转化成功了!

四、导出ResNet50网络的MindIR格式模型

1.训练ResNet50网络生成checkpoint

ResNet50模型训练代码依旧使用MindSpore官方代码仓中modelzoo的代码,链接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/resnet

2.Cifar10数据集

因为ImageNet数据集比较庞大训练需要比较久的时间,所以这边我们采用cifar10数据集进行模型训练

1)Cifar10数据集官方下载:http://www.cs.toronto.edu/~kriz/cifar.html

2) 百度网盘下载:链接: https://pan.baidu.com/s/1CpgjFtZk2ZQsr_qUtc6z1g 提取码: kjhi

3.执行训练命令

python train.py --net resnet50 --dataset cifar10 --dataset_path ./data/cifar10-bin/train/  --device_target Ascend

注:我使用的是昇腾平台进行模型训练,如果使用CPU或者GPU进行训练的话device_target后面改为对应的就好

当屏幕出现epoch、loss等数值时模型就开始进行训练了

4.获取checkpoint

当模型训练参数中指定的ckpt_path文件夹中出现ckpt文件就代表训练成功了。接下去我们可以选择一个ckpt文件进行转换mindir格式。这里我选择resnet-90_1562.ckpt

5.编写模型转换脚本

import numpy as np
from mindspore import Tensor, export, load_checkpoint, load_param_into_net
from src.resnet import resnet50 as ResNet50resnet = ResNet50()
# load the parameter into net
load_checkpoint("./checkpoint/resnet-90_1562.ckpt", net=resnet)
input = np.random.uniform(0.0, 1.0, size=[32, 3, 224, 224]).astype(np.float32)
export(resnet, Tensor(input), file_name='resnet-90_162', file_format='MINDIR')

6.执行模型转换

python resnet_mindir.py

执行完毕后查看代码根目录下如果存在前面我们指定的resnet-90_1562.mindir文件的话就代表模型转化成功了!

转自文章链接:【MindSpore两日训练营第五期笔记】导出MindIR格式模型_MindSpore_昇腾论坛_华为云论坛

感谢作者的努力与分享,侵权立删!

这篇关于【MindSpore两日训练营第五期笔记】导出MindIR格式模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615759

相关文章

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可