MindSpore网络模型类
Q:使用MindSpore进行模型训练时,CTCLoss的输入参数有四个:inputs, labels_indices, labels_values, sequence_length,如何使用CTCLoss进行训练?
A:定义的model.train接口里接收的dataset可以是多个数据组成,形如(data1, data2, data3, …),所以dataset是可以包含inputs,labels_indices,labels_values,sequence_length的信息的。只需要定义好相应形式的dataset,传入model.train里就可以。具体的可以了解下相应的数据处理接口。
Q:模型转移时如何把PyTorch的权重加载到MindSpore中?
A:首先输入PyTorch的pth文件,以ResNet-18为例,MindSpore的网络结构和PyTorch保持一致,转完之后可直接加载进网络,这边参数只用到BN和Conv2D,若有其他层ms和PyTorch名称不一致,需要同样的修改名称。
Q:模型已经训练好,如何将模型的输出结果保存为文本或者npy的格式?
A:网络的输出为Tensor,需要使用asnumpy()方法将Tensor转换为numpy,再进行下一步保存。具体可参考:
out = net(x)

np.save(“output.npy”, out.asnumpy())

Q:使用MindSpore做分割训练,必须将数据转为MindRecords吗?
A:build_seg_data.py是将数据集生成MindRecord的脚本,可以直接使用/适配数据集。或者如果想尝试实现数据集的读取,可以使用GeneratorDataset自定义数据集加载。
GenratorDataset 示例
GenratorDataset API说明
Q:MindSpore可以读取TensorFlow的ckpt文件吗?
A:MindSpore的ckpt和TensorFlow的ckpt格式是不通用的,虽然都是使用protobuf协议,但是proto的定义是不同的。当前MindSpore不支持读取TensorFlow或PyTorch的ckpt文件。
Q:如何不将数据处理为MindRecord格式,直接进行训练呢?
A:可以使用自定义的数据加载方式 GeneratorDataset,具体可以参考数据集加载文档中的自定义数据集加载。
Q:MindSpore现支持直接读取哪些其他框架的模型和哪些格式呢?比如PyTorch下训练得到的pth模型可以加载到MindSpore框架下使用吗?
A: MindSpore采用protbuf存储训练参数,无法直接读取其他框架的模型。对于模型文件本质保存的就是参数和对应的值,可以用其他框架的API将参数读取出来之后,拿到参数的键值对,然后再加载到MindSpore中使用。比如想用其他框架训练好的ckpt文件,可以先把参数读取出来,再调用MindSpore的save_checkpoint接口,就可以保存成MindSpore可以读取的ckpt文件格式了。
Q:用MindSpore训练出的模型如何在Ascend 310上使用?可以转换成适用于HiLens Kit用的吗?
A:Ascend 310需要运行专用的OM模型,先使用MindSpore导出ONNX或AIR模型,再转化为Ascend 310支持的OM模型。具体可参考多平台推理。可以,HiLens Kit是以Ascend 310为推理核心,所以前后两个问题本质上是一样的,需要转换为OM模型.
Q:MindSpore如何进行参数(如dropout值)修改?
A:在构造网络的时候可以通过 if self.training: x = dropput(x),验证的时候,执行前设置network.set_train(mode_false),就可以不适用dropout,训练时设置为True就可以使用dropout。
Q:从哪里可以查看MindSpore训练及推理的样例代码或者教程?
A:可以访问MindSpore官网教程训练和MindSpore官网教程推理。
Q:MindSpore支持哪些模型的训练?
A:MindSpore针对典型场景均有模型训练支持,支持情况详见Release note。

Q:MindSpore有哪些现成的推荐类或生成类网络或模型可用?
A:目前正在开发Wide & Deep、DeepFM、NCF等推荐类模型,NLP领域已经支持Bert_NEZHA,正在开发MASS等模型,用户可根据场景需要改造为生成类网络,可以关注MindSpore Model Zoo。
Q:MindSpore模型训练代码能有多简单?
A:除去网络定义,MindSpore提供了Model类的接口,大多数场景只需几行代码就可完成模型训练。
Q:如何使用MindSpore拟合f(x)=a×sin(x)+bf(x)=a×sin(x)+b这类函数?
A:以下拟合案例是基于MindSpore线性拟合官方案例改编而成。
# The fitting function is:f(x)=2*sin(x)+3.
import numpy as np
from mindspore import dataset as ds
from mindspore.common.initializer import Normal
from mindspore import nn, Model, context
from mindspore.train.callback import LossMonitor

context.set_context(mode=context.GRAPH_MODE, device_target=“CPU”)

def get_data(num, w=2.0, b=3.0):
# f(x)=w * sin(x) + b
# f(x)=2 * sin(x) +3
for i in range(num):
x = np.random.uniform(-np.pi, np.pi)
noise = np.random.normal(0, 1)
y = w * np.sin(x) + b + noise
yield np.array([np.sin(x)]).astype(np.float32), np.array([y]).astype(np.float32)

def create_dataset(num_data, batch_size=16, repeat_size=1):
input_data = ds.GeneratorDataset(list(get_data(num_data)), column_names=[‘data’,‘label’])
input_data = input_data.batch(batch_size)
input_data = input_data.repeat(repeat_size)
return input_data

class LinearNet(nn.Cell):
def init(self):
super(LinearNet, self).init()
self.fc = nn.Dense(1, 1, Normal(0.02), Normal(0.02))

def construct(self, x):x = self.fc(x)return x

if name == “main”:
num_data = 1600
batch_size = 16
repeat_size = 1
lr = 0.005
momentum = 0.9

net = LinearNet()
net_loss = nn.loss.MSELoss()
opt = nn.Momentum(net.trainable_params(), lr, momentum)
model = Model(net, net_loss, opt)ds_train = create_dataset(num_data, batch_size=batch_size, repeat_size=repeat_size)model.train(1, ds_train, callbacks=LossMonitor(), dataset_sink_mode=False)print(net.trainable_params()[0], "\n%s" % net.trainable_params()[1])

Q:如何使用MindSpore拟合f(x)=ax2+bx+cf(x)=ax2+bx+c这类的二次函数?
A:以下代码引用自MindSpore的官方教程的代码仓
在以下几处修改即可很好的拟合f(x)=ax2+bx+cf(x)=ax2+bx+c:

  1. 数据集生成。
  2. 拟合网络。
  3. 优化器。
    修改的详细信息如下,附带解释。
    # Since the selected optimizer does not support CPU, so the training computing platform is changed to GPU, which requires readers to install the corresponding GPU version of MindSpore.
    context.set_context(mode=context.GRAPH_MODE, device_target=“GPU”)

# Assuming that the function to be fitted this time is f(x)=2x^2+3x+4, the data generation function is modified as follows:
def get_data(num, a=2.0, b=3.0 ,c = 4):
for i in range(num):
x = np.random.uniform(-10.0, 10.0)
noise = np.random.normal(0, 1)
# The y value is generated by the fitting target function ax^2+bx+c.
y = x * x * a + x * b + c + noise
# When ax^2+bx+c is fitted, a and b are weight parameters and c is offset parameter bias. The training data corresponding to the two weights are x^2 and x respectively, so the data set generation mode is changed as follows:
yield np.array([x*x, x]).astype(np.float32), np.array([y]).astype(np.float32)

def create_dataset(num_data, batch_size=16, repeat_size=1):
input_data = ds.GeneratorDataset(list(get_data(num_data)), column_names=[‘data’,‘label’])
input_data = input_data.batch(batch_size)
input_data = input_data.repeat(repeat_size)
return input_data

class LinearNet(nn.Cell):
def init(self):
super(LinearNet, self).init()
# Because the full join function inputs two training parameters, the input value is changed to 2, the first Nomral(0.02) will automatically assign random weights to the input two parameters, and the second Normal is the random bias.
self.fc = nn.Dense(2, 1, Normal(0.02), Normal(0.02))

def construct(self, x):x = self.fc(x)return x

if name == “main”:
num_data = 1600
batch_size = 16
repeat_size = 1
lr = 0.005
momentum = 0.9

net = LinearNet()
net_loss = nn.loss.MSELoss()
# RMSProp optimalizer with better effect is selected for quadratic function fitting, Currently, Ascend and GPU computing platforms are supported.
opt = nn.RMSProp(net.trainable_params(), learning_rate=0.1)
model = Model(net, net_loss, opt)ds_train = create_dataset(num_data, batch_size=batch_size, repeat_size=repeat_size)
model.train(1, ds_train, callbacks=LossMonitor(), dataset_sink_mode=False)print(net.trainable_params()[0], "\n%s" % net.trainable_params()[1])

MindSpore网络模型类相关推荐

  1. MindSpore特性支持类

    MindSpore特性支持类 Q:请问MindSpore支持梯度截断吗? A:支持,可以参考梯度截断的定义和使用. Q:如何在训练神经网络过程中对计算损失的超参数进行改变? A:暂时还未有这样的功能. ...

  2. 华为 MindSpore 喊你来开发 10 大 AI 模型,260 万奖金怎能没你一份?

    今年3月以来,国内多家企业正式开源深度学习框架的消息不断传出,这种"星星之火"的势头让一些业内开发者一度表示这会成为中国开源框架元年. 实际上,国内厂商开源的AI框架确实取得了不少 ...

  3. 基于Tensorflow2.x低阶API搭建神经网络模型并训练及解决梯度爆炸与消失方法实践

    1. 低阶API神经网络模型 1.1. 关于tf.Module 关于Tensorflow 2.x,最令我觉得有意思的功能就是tf.function和AutoGraph了.他们可以把Python风格的代 ...

  4. # PyTorch学习笔记(15)--神经网络模型训练实战

    PyTorch学习笔记(15)–神经网络模型训练实战     本博文是PyTorch的学习笔记,第15次内容记录,主要是以一个实际的例子来分享神经网络模型的训练和测试的完整过程. 目录 PyTorch ...

  5. 利用pytorch搭建LeNet-5网络模型(win11)

    目录 1. 前言 2. 程序 2.1 net 2.2 train 2.3 main 3. 总结 1. 前言 手写字体识别模型LeNet5诞生于1994年,是最早的卷积神经网络之一.LeNet5通过巧妙 ...

  6. 华为计算黄之鹏:AI开源框架已经到“汽车替代马车”的阶段 | MEET2021

    编辑部 整理自 MEET 2021  量子位 报道 | 公众号 QbitAI AI的发展,除了要有应用的落地.芯片等技术的支撑,还离不开一个非常重要的基础--AI算法的框架. 然而在TensorFlo ...

  7. python实现人脸检测及识别(2)---- 利用keras库训练人脸识别模型

    前面已经采集好数据集boss文件夹存放需要识别的对象照片,other存放其他人的训练集照片,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的tensorflo ...

  8. python神经网络案例——CNN卷积神经网络实现mnist手写体识别

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python教程全解 CNN卷积神经网络的理论教程参考 ...

  9. 图神经网络学习(一)-GCN及其应用

    内容提要:GCN背景简介+torch_geometric库安装+GCN处理Cora数据集 1.图神经网络 1.1 概念 原有的卷积神经网络主要用来解决欧式空间中的数据(数据规整,形状固定),例如图像数 ...

最新文章

  1. TCP三次握手,四次分手
  2. 0902 - Preferences Permission
  3. 【Linux】10_存储管理EXT4文件系统详解
  4. 手写自己的MyBatis框架-V2.0结果集处理
  5. java Split 用法
  6. 硬件基础 —— 电容
  7. 企业实战_16_MyCat全局自增ID
  8. mysql tree_MySQL树形遍历(二)
  9. 9 QM配置-检验计划配置-维护检验类型
  10. 84直方图最大矩形覆盖 · Largest Rectangle in Histogram
  11. 相分离相关文章阅读Intrinsically disordered linkers determine the interplay between phase separation and gelat
  12. Qt setFocus
  13. 彩翼系列-彩票分析软件源代码(双色球,排三,排五,3D,22选5,30选7)源代码
  14. 令牌环(Token Ring)
  15. 【HAVENT原创】Spring Boot + Spring-Kafka 异步配置
  16. 改变Android应用图标
  17. 在线旅游网站盈利模式
  18. 语音端点检测整理 VAD
  19. 机器学习、计算机视觉神犇/大牛主页
  20. 相机拍摄单色模式MOV视频可以恢复彩色吗?

热门文章

  1. linux环境下nacos的安装+启动,阿里云服务器安装nacos
  2. 2022-2028年中国加密货币交易所市场研究及前瞻分析报告
  3. 2022-2028年中国纳滤膜产业发展态势及市场发展策略报告
  4. javascript的知识总结
  5. 第五周周记(国庆第一天)
  6. 2018半年总结:走过的路
  7. matplotlib绘制热力图
  8. LeetCode简单题之将每个元素替换为右侧最大元素
  9. 王道考研 计算机网络笔记 第三章:数据链路层
  10. cmodel模拟器开发