软件介绍
MindSpore是一个全场景深度学习框架,向数据科学家和算法工程师提供了统一的模型训练、推理和导出等接口。目前提供了Python编程范式,使用它可以更加方便地构建复杂的神经网络模型,让AI编程变得简单。有着静态图模式和动态图模式两种执行模式,同时提供了统一的编码方式,增加了静态图和动态图的可兼容性,让用户可以随时切换两种模式。软件API友好、调试难度低,高效执行的特点深受开发人员的喜爱。
软件特色
【简单的开发体验】
帮助开发者实现网络自动切分,只需串行表达就能实现并行训练,降低门槛,简化开发流程。
使用该深度学习、ai、人工智能框架的优势之灵活的调试模式
【灵活的调试模式】
具备训练过程静态执行和动态调试能力,开发者通过变更一行代码即可切换模式,快速在线定位问题。
使用该深度学习、ai、人工智能框架的优势之充分发挥硬件潜能
【充分发挥硬件潜能】
最佳匹配昇腾处理器,最大程度地发挥硬件能力,帮助开发者缩短训练时间,提升推理性能。
使用该深度学习、ai、人工智能框架的优势之全场景快速部署
【全场景快速部署】
支持云、边缘和手机上的快速部署,实现更好的资源利用和隐私保护,让开发者专注于AI应用的创造。
层次结构
MindSpore向用户提供了3个不同层次的API,支撑用户进行网络构建、整图执行、子图执行以及单算子执行,从低到高分别为Low-Level Python API、Medium-Level Python API以及High-Level Python API。
♦Low-Level Python API
第一层为低阶API,主要包括张量定义、基础算子、自动微分等模块,用户可使用低阶API轻松实现张量定义和求导计算,例如用户可通过Tensor接口自定义张量,使用ops.composite模块下的GradOperation算子计算函数在指定处的导数。
♦Medium-Level Python API
第二层为中阶API,其封装了低价API,提供网络层、优化器、损失函数等模块,用户可通过中阶API灵活构建神经网络和控制执行流程,快速实现模型算法逻辑,例如用户可调用Cell接口构建神经网络模型和计算逻辑,通过使用loss模块和Optimizer接口为神经网络模型添加损失函数和优化方式,利用dataset模块对数据进行处理以供模型的训练和推导使用。
♦High-Level Python API
第三层为高阶API,其在中阶API的基础上又提供了训练推理的管理、混合精度训练、调试调优等高级接口,方便用户控制整网的执行流程和实现神经网络的训练推理及调优,例如用户使用Model接口,指定要训练的神经网络模型和相关的训练设置,对神经网络模型进行训练,通过Profiler接口调试神经网络性能。
通用场景
【快速入门】
通过一个实际样例实现手写数字的识别,带领大家体验MindSpore基础的功能,一般来说,完成整个样例实践会持续20~30分钟。
面向专家的通用场景教程之图像分类
【图像分类】
结合CIFAR-10数据集,讲解MindSpore如何处理图像分类任务。
面向专家的通用场景教程之情感分析
【情感分析】
构建一个自然语言处理的模型,通过文本分析和推理实现情感分析,完成对文本的情感分类。
【生态合作】
开发者体验(昇腾环境)
在云上ModelArts AI开发平台抢鲜体验昇腾资源
【开源合作】
MindSpore社区期待各位开发者的加入
【高校合作】
MindSpore诚挚邀请您加入华为沃土高校教研AI扶持计划。
基础使用教程
一、实现一个图片分类应用
1、处理需要的数据集,这里使用了MNIST数据集。
2、定义一个网络,这里我们使用LeNet网络。
3、定义损失函数和优化器。
4、加载数据集并进行训练,训练完成后,查看结果及保存模型文件。
5、加载保存的模型,进行推理。
6、验证模型,加载测试数据集和训练后的模型,验证结果精度。
二、实现简单线性函数拟合
回归问题算法通常是利用一系列属性来预测一个值,预测的值是连续的。例如给出一套房子的一些特征数据,如面积、卧室数等等来预测房价,利用最近一周的气温变化和卫星云图来预测未来的气温情况等。如果一套房子实际价格为500万元,通过回归分析的预测值为499万元,则认为这是一个比较好的回归分析。在机器学习问题中,常见的回归分析有线性回归、多项式回归、逻辑回归等。本例子介绍线性回归算法,并通过MindSpore进行线性回归AI训练体验。
整体流程如下:
1、生成数据集
2、定义训练网络
3、定义前向传播网络与反向传播网络并关联
4、拟合过程可视化准备
5、执行训练
三、加载模型用于推理或迁移学习
1、用于推理验证
针对仅推理场景可以使用load_checkpoint把参数直接加载到网络中,以便进行后续的推理验证。
示例代码如下:
resnet = ResNet50()
load_checkpoint("resnet50-2_32.ckpt", net=resnet)
dateset_eval = create_dataset(os.path.join(mnist_path, "test"), 32, 1) # define the test dataset
loss = CrossEntropyLoss()
model = Model(resnet, loss, metrics={"accuracy"})
acc = model.eval(dataset_eval)
load_checkpoint方法会把参数文件中的网络参数加载到模型中。加载后,网络中的参数就是CheckPoint保存的。
eval方法会验证训练后模型的精度。
2、用于迁移学习
针对任务中断再训练及微调(Fine Tune)场景,可以加载网络参数和优化器参数到模型中。
示例代码如下:
# return a parameter dict for model
param_dict = load_checkpoint("resnet50-2_32.ckpt")
resnet = ResNet50()
opt = Momentum()
# load the parameter into net
load_param_into_net(resnet, param_dict)
# load the parameter into operator
load_param_into_net(opt, param_dict)
loss = SoftmaxCrossEntropyWithLogits()
model = Model(resnet, loss, opt)
model.train(epoch, dataset)
load_checkpoint方法会返回一个参数字典。
load_param_into_net会把参数字典中相应的参数加载到网络或优化器中。
网友评论