使用MindSpore框架搭建神经网络流程与其他框架(TensorFlow/PyTorch)类似,但支持的算子存在差异,需要在进行网络迁移(例如由TensorFlow迁移至MindSpore Ascend平台)时找出MindSpore框架缺失的算子。
MindSpore API由各种Python/C++ API算子组成,可以大致分为:
数据框架算子
包括张量、基本数据类型、训练梯度、优化器算子,如mindspore.int32
、mindspore.nn.Cell
等。
数据预处理算子
包括图片读取、数据类型转化算子,如mindspore.dataset.MnistDataset
等。
网络结构算子
包括网络构建中使用到的卷积、归一化算子,如mindspore.nn.Conv2d
、mindspore.nn.Dense
等。
网络结构算子表层为ME算子,即用户调用的算子API(例如mindspore.nn.Softmax
),ME算子底层调用TBE算子(C/C++)实现。
统计缺失ME算子时,需要找出源码脚本中所有算子(含数据框架类、数据预处理、网络结构算子)在MindSpore框架的对应算子(例如tf.nn.relu
对应MindSpore算子为mindspore.nn.ReLU
)。如果MindSpore中没有对应算子,则计入缺失。
在代码库找到网络结构及实现训练功能的Python文件(名称一般为train.py model.py等等),在脚本文件中查找所有相关算子(含数据框架类、数据预处理、网络结构算子),并与MindSpore算子API对比,查找mindspore.nn
或者mindspore.ops
下算子的平台支持情况。
若该网页均未能找到对应的ME算子,则可继续在MindSpore API列表中搜索算子名称。
若源码为PyTorch脚本,则可以直接查询MindSpore与PyTorch的算子映射找到对应的MindSpore算子。其他框架算子的映射可以参考算子命名与功能描述。注意,针对相同功能的算子,MindSpore的命名可能与其他框架不同,同名算子参数与功能也可能与其他框架有区别,均以官方描述为准。
MindSpore提供GRAPH_MODE
和PYNATIVE_MODE
两种模式。
PyNative模式下模型进行推理的行为与一般Python代码无异。
而在使用GRAPH_MODE时,或使用PYNATIVE_MODE进行训练时,通常会出现语法限制。在这两种情况下,需要对Python代码进行图编译操作,而这一步操作中MindSpore目前还未能支持完整的Python语法全集,所以construct
函数的编写会存在部分限制。具体限制内容可以参考MindSpore静态图语法。
相较于详细的语法说明,常见的限制可以归结为以下几点:
__init__
阶段。__init__
阶段。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。