Anacoda3环境华为MindSpore1.2深度学习框架安装及应用

在人工智能与机器学习研究与应用领域,目前较流行的深度学习框架主要有Facebook PyTorch、Google TensorFlow/Keras、华为MindSpore 、百度PaddlePaddle等,Python语言常与这些深度学习框架联合使用。本文以Windows10 Anaconda3(Python3.7.0)和华为公司2021年3月底发布的CPU版MindSpore1.2开源深度学习框架为例,介绍Anaconda、MindSpore及Jupyter Notebook IDE Python应用环境的安装及应用示例。

内容提要

一、Anaconda3安装及MindSpore1.2虚拟环境创建
二、MindSpore安装与测试
三、Jupyter Notebook环境MindSpore应用测试
四、Jupyter Notebook环境MindSpore应用举例

一、Win10 Anaconda3安装及MindSpore1.2虚拟环境创建
1.Anaconda3安装
Anaconda官网一般显示的是最新版本,其下载网址是:https://www.anaconda.com/products/individual,如果想要下载以往版本,可以在下面网址下载:https://repo.anaconda.com/archive/。上面网站下载Anaconda较慢,我们可从清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载Anaconda。这里下载Windows版64位Anaconda3(Anaconda3-5.3.0-Windows-x86_64.exe, 631.4 MB, 2018-09-28 06:4,Python对应版本是Python3.7.0)。下载完毕后,运行Anaconda3-5.3.0-Windows-x86_64.exe安装软件,按提示步骤安装Anaconda3。
2.MindSpore虚拟环境创建
成功安装Anaconda3后,在开始菜单点击【Anaconda Prompt】进入Anaconda命令行窗口。
(1)选择一个Python版本安装(这里选择python3.7.0版本),并创建虚拟环境MindSpore:
conda create --name mindspore python=3.7.0 //虚拟环境的名称是mindspore
(2)查看MindSpore虚拟环境是否安装成功:
conda info --envs
我们可以看到有base和mindspore两个虚拟环境 (见图1)。
在这里插入图片描述
图1
(3) 激活MindSpore虚拟环境mindspore:
activate mindspore
用activate命令激活mindspore虚拟环境。
二、MindSpore安装与测试
1.MindSpore下载
进入华为MindSpore官网列表版本页面链接https://www.mindspore.cn/versions,这里下载CPU版的Windows 64位MindSpore1.2.0版本组件 (见图2的蓝色框)。
在这里插入图片描述
图2
2.MindSpore安装
将下载好的mindspore-1.2.0-cp37-cp37m-win_amd64.whl文件移到要安装目录,不同的机器安装目录有所不同,本机安装目录为C:/Users/86131(见图3)。在Anaconda Prompt输入以下命令安装MindSpore:
pip install mindspore-1.2.0-cp37-cp37m-win_amd64.whl
在这里插入图片描述
图3
3.测试MindSpore是否安装成功
(1)进入Anaconda Prompt,激活mindspore:activate mindspore
(2)进入python:python
(3)测试numpy:import numpy
(4)测试mindspore:import mindspore
(5)显示mindspore版本:mindspore.__version __
如果以上步骤的命令执行都没有问题,表明MindSpore安装成功(见图4)。
在这里插入图片描述
图4
3.将MindSpore嵌入到Jupyter Notebook
在Anaconda中,我们常使用Jupyter Notebook。将 MindSpore嵌入到 Jupyter Notebook中的命令如下:
(1)激活MindSpore虚拟环境mindspore:activate mindspore
(2)在虚拟环境mindspore中安装Jupyter Notebook:pip install jupyter notebook
4. 在mindspore虚拟环境中安装ipykernel
pip install ipykernel
5. 将Python环境名称写入Notebook的kernel中
命令格式为:
python -m ipykernel install --user --name mindspore --display-name “Python环境名称”
这里设定Python环境名称为mindspore1.2,命令为:
python -m ipykernel install --user --name mindspore --display-name “mindspore1.2”
三、Jupyter Notebook环境MindSpore应用测试
启动电脑,通过【开始】菜单栏,点击【Jupyter Notebook(mindspore)】(图5),进入Jupyter Notebook IDE Python应用环境。
在这里插入图片描述
图5
以下是华为官网(https://www.mindspore.cn/install)提供的昇腾(Ascend)系列AI处理器环境下的MindSpore测试代码案例:
import numpy as np
from mindspore import Tensor
import mindspore.ops as ops
import mindspore.context as context
context.set_context(device_target=“Ascend”)
x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))
在Jupyter Notebook的In[1]输入单元粘贴以上代码,由于本机已安装了X86 CPU版本的MindSpore1.2.0,这里将context.set_context(device_target=“Ascend”)语句中的昇腾标识“Ascend”改为X86标识“CPU”,见图6所示。
在这里插入图片描述
图6
在[Jupyter Notebook]主菜单中,依次选取[Kernel]→[Change kernel] →[mindspore1.2] (见图7的红色框),选中Kernel为mindspore1.2。
在这里插入图片描述
图7
按下[Ctrl]+[Enter]组合键运行测试代码,执行结果见图8所示,表明Jupyter Notebook环境下MindSpore测试代码运行正确。
在这里插入图片描述
图8
接下来,还可继续在Anaconda Prompt的mindspore虚拟环境下,使用pip install安装一些Python第三方库如sklearn、matplotlib等,这样我们就能在新建的Jupyter Notebook IDE Python环境下采用MindSpore深度学习框架并结合多种Python第三方库进行机器学习、神经网络、深度学习、科学计算等领域的科学实验与应用编程了。
四、Jupyter Notebook环境MindSpore应用举例
应用例:Iris(鸢尾花)数据集是常用于机器学习的一种多分类实验数据集,该数据集由著名统计学家Fisher于1936年收集整理。Iris数据集包含150个数据集(见图9),分为3类,每类50个样本数据,每个样本数据包含4个特征/属性。可通过萼片(Sepal)长度、萼片宽度、花瓣(Petal)长度、花瓣宽度4个特征预测鸢尾花属于(Setosa山鸢尾,Versicolour杂色鸢尾,Virginica维吉尼亚鸢尾)三种鸢尾花卉中的哪一类。 Iris数据集中各样本的四个特征长度和宽度均以cm为单位。
在这里插入图片描述
图9
现设计一个MLP(Multi-Layer Perceptron,多层感知器)神经网络实现鸢尾花的三分类。假设鸢尾花三分类问题的MLP神经网络结构如图10所示,该神经网络包括一个输入层、两个隐含层和一个输出层。输入层为包含4个特征的模式向量[x1, x2, x3, x4]’;第一个隐含层包含4个神经元,使用ReLU激活函数,它是一种在多层神经网络中十分有效的激活函数;第二个隐含层包含6个神经元,同样使用ReLU激活函数;输出层使用3个神经元,采用Softmax激活函数用来输出网络预测每个Iris类值的概率,选择具有最高概率的输出以便产生清晰的Iris分类结果 (注意,本例假设的网络结构并非最优,实际应用中需要进行NN参数调节实验,关于NN调参方法此略)。
在这里插入图片描述
图10
对应于图10的鸢尾花三分类MLP神经网络架构,下面给出采用华为MindSpore实现鸢尾花三分类神经网络模型的程序:

import numpy as np
import mindspore.dataset as ds
import mindspore
from mindspore import Model
from mindspore.train.callback import LossMonitor
from mindspore.nn.loss import SoftmaxCrossEntropyWithLogits

from sklearn import datasets   

class MLP(mindspore.nn.Cell):
    # 定义需要的操作
    def __init__(self):
        super(MLP, self).__init__()
        self.fc1 = mindspore.nn.Dense(4, 4)
        self.fc2 = mindspore.nn.Dense(4, 6)
        self.fc3 = mindspore.nn.Dense(6, 3)
        self.relu = mindspore.nn.ReLU()
        self.softmax = mindspore.nn.Softmax()

    # 定义网络的计算过程
    def construct(self, x):
        x = self.relu(self.fc1(x))
        x = self.relu(self.fc2(x))
        x = self.softmax(self.fc3(x))
        return x

class IrisDatasetGenerator:
    def __init__(self, data, target, is_train):
        train_num = int(len(data) * 0.8)
        if is_train:
            self.data = data[:train_num].astype(np.float32)
            self.label = target[:train_num].astype(np.int32)
            print(f"data-len={len(self.data)}")
        else:
            self.data = data[train_num:].astype(np.float32)
            self.label = target[train_num:].astype(np.int32)
            print(f"data-len={len(self.data)}")

    def __getitem__(self, index):
        return self.data[index], self.label[index]

    def __len__(self):
        return len(self.data)

def gen_dataset(data, label, is_train=True):
    dataset_generator = IrisDatasetGenerator(data, label, is_train)
    iris_ds = mindspore.dataset.GeneratorDataset(dataset_generator,
                                  ["data", "label"], shuffle=True)
    iris_ds = iris_ds.batch(batch_size)
    return iris_ds

if __name__ == '__main__':
    # 创建MLP网络及定义超参数
    net = MLP()
    epochs = 200
    batch_size = 5
    # 定义优化器与损失函数
    net_opt = mindspore.nn.Adam(net.trainable_params())
    net_loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
    model = Model(net, net_loss, net_opt, metrics={"acc", "loss"})
    callbacks = [LossMonitor(per_print_times=5)]
    # 从sklearn中加载鸢尾花Iris数据
    dataset = datasets.load_iris()
    x = dataset.data
    y = dataset.target
    # 将数据打乱
    state = np.random.get_state()
    np.random.shuffle(x)
    np.random.set_state(state)
    np.random.shuffle(y)
    # 训练
    print("Start training...")
    iris_train_ds = gen_dataset(x, y, is_train=True)  # 生成mindspore数据集对象
    model.train(epochs, iris_train_ds, callbacks=callbacks)
    # 测试
    print("Start testing...")
    iris_val_ds = gen_dataset(x, y, is_train=False)  # 生成mindspore数据集对象
    res = model.eval(iris_val_ds)
    print(res)

Iris数据集可期待的模型准确率一般在95%以上。以上程序在本机Jupyter Notebook+MindSpore环境下运行通过,运行结果见图11所示。
在这里插入图片描述
图11
每次运行程序,模型准确率结果会有所不同,图11中的准确率(acc: accuracy)为91%、损失率(loss)为0.63。
如果不再使用自建的mindspore虚拟环境,也可使用命令conda remove -n mindspore --all将其删除。
发布日期:2021年05月22日

今年的华为开发者大会 HDC 2020 上,除了**昇腾、鲲鹏等自研芯片硬件平台**之外,最令人期待的就是**深度学习框架 MindSpore 的开源**了。今天上午,华为 MindSpore **首席科学家陈雷**在活动中宣布这款产品正式开源,我们终于可以在开放平台上一睹它的真面目。 本文是根据机器之心报道的MindSpore 的开源介绍而整理的.md笔记 作为一款支持**端、边、云独立/协同的统一训练和推理框架华为希望通过这款完整的软件堆栈,实现**一次性算子开发、一致的开发和调试体验**,以此帮助开发者实现**一次开发,应用在所有设备上平滑迁移**的能力。 三大创新能力:新编程范式,执行模式和协作方式 由**自动微分、自动并行、数据处理**等功能构成 开发算法即代码、运行高效、部署态灵活**的**特点**, 三层核心:从下往上分别是**后端运行时、计算图引擎及前端表示层**。 最大特点:采用了业界最新的 **Source-to-Source 自动微分**,它能**利用编译器及编程语言的底层技术**,进一步**优化以支持更好的微分表达**。主流深度学习框架中主要有**三种自动微分技术,才用的不是静态计算图、动态计算图,而是基于**源码**转换:该技术源以**函数式编程框架**为基础,以**即时编译(JIT)**的方式**在中间表达(编译过程中程序的表达形式)上做自动微分变换**,支持**复杂控制流场景、高阶函数和闭包**。 MindSpore 主要概念就是张量、算子、单元和模型 其代码有两个比较突出的亮点:计算图的调整,动态图与静态图可以一行代码切换;自动并行特性,我们写的串行代码,只需要多加一行就能完成自动并行。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁易学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值