基于MindSpore框架教程网络和MINST数据集的训练和推理

最近听说华为开源了AI框架MindSpore,之前装tensorflow 遇到一堆坑,现在不知道国产AI框架是不是也会遇到,所以过来体验下

1.安装mindspore

参考mindspore官网资料,GPU支持的范围比CPU大,但是博主机器有点渣,GPU没有nvidia,最好的当然是Ascend,不过没钱买^~^....  所以最终决定先拿CPU试试水,安装最简单的CPU版本,依据官网给的支持列表CPU版本目前只支持Lenet,那就只能用lenet了

安装步骤看起来还算比较简单https://www.mindspore.cn/install

总体首先是得有个ubuntu16.4或者18.4版本,然后python要求3.7.5以上,但是看起来3.7应该就能满足,然后安装好conda环境

其次就是编译依赖如果你要自己改他们的源码自己编译得把gcc,cmake等依赖先装好且升级到对应版本,

我这里作为小白一枚就做个最简单的,下载已经发布的0.1.0 CPU版本whl包安装,不需要装cmake工具,它会自动下载缺少的部分依赖包

pip install mindspore-{version}-cp37-cp37m-linux_{arch}.whl

基于MindSpore框架教程网络和MINST数据集的训练和推理_第1张图片

安装成功后执行如下命令检查是否安装成功

python -c 'import mindspore'
echo $?

2.下载教程网络代码

代码下载地址

https://gitee.com/mindspore/docs/blob/r0.1/tutorials/tutorial_code/lenet.py

3.执行lenet的训练和推理参考

参考https://www.mindspore.cn/tutorial/zh-CN/0.1.0-alpha/quick_start/quick_start.html

下载代码后,直接在本地执行 

python lenet.py --device_target=CPU

最终lose收敛结果和加载模型后测试集推理正确率如图所示

基于MindSpore框架教程网络和MINST数据集的训练和推理_第2张图片

这里可能会遇到一个坑,下载MINST数据集可能报连接失败,建议先下载数据集到本地后手工gzip -d 解压文件到如下目录

基于MindSpore框架教程网络和MINST数据集的训练和推理_第3张图片

然后注释下lenet.py中的download_dataset(),如下

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='MindSpore LeNet Example')
    parser.add_argument('--device_target', type=str, default="Ascend", choices=['Ascend', 'GPU', 'CPU'],
                        help='device where the code will be implemented (default: Ascend)')
    args = parser.parse_args()
    context.set_context(mode=context.GRAPH_MODE, device_target=args.device_target,
                        enable_mem_reuse=False)
    # download mnist dataset
    #download_dataset()
    # learning rate setting
    lr = 0.01
    momentum = 0.9
    epoch_size = 1
    mnist_path = "./MNIST_Data"
    # define the loss function
    net_loss = SoftmaxCrossEntropyWithLogits(is_grad=False, sparse=True, reduction='mean')
    repeat_size = epoch_size
    # create the network
    network = LeNet5()
    # define the optimizer
    net_opt = nn.Momentum(network.trainable_params(), lr, momentum)
    config_ck = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)
    # save the network model and parameters for subsequence fine-tuning
    ckpoint_cb = ModelCheckpoint(prefix="checkpoint_lenet", config=config_ck)
    # group layers into an object with training and evaluation features
    model = Model(network, net_loss, net_opt, metrics={"Accuracy": Accuracy()})

    train_net(args, model, epoch_size, mnist_path, repeat_size, ckpoint_cb)
    test_net(args, network, model, mnist_path)

4.总结

MindSpore总体来看安装部署比较流畅,没有太大的坑,另外教程网络也比较清晰,能快速get到需要的功能和用法,API简洁明了,为开发者提供了一个新的免费AI入门神器,虽然CPU支持网络太少,但以后也会慢慢补足,相信会有越来越多的人关注这个框架,让我们拭目以待吧!

 

 

你可能感兴趣的:(人工智能,MINST)