昇思25天学习打卡营第4天|初学教程之网络构建

        本文主要介绍如何使用MindSpore搭建一个简单的神经网络模型,然后就是展示在官方提。

基本介绍

       神经网络模型的搭建是学习深度学习必不可少的,神经网络模型是由神经网络层和Tensor操作构成的。MindSpore的mindspore.nn模块提供了常见神经网络层的实现,有助于开发者快速搭建自己想要的模型,实现算法原型。在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元,所有模型的搭建最好继承该基类。MindSpore中一个神经网络模型表示为一个Cell,它由不同的子Cell构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。

模型类

        MindSpore定义一个模型时,最好继承nn.Cell类,并在__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor操作(construct意为神经网络(计算图)构建,相关内容详见使用静态图加速)。下面是一个简单的模型类代码示例:

class Network(nn.Cell):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.dense_relu_sequential = nn.SequentialCell(
            nn.Dense(28*28, 512, weight_init="normal", bias_init="zeros"),
            nn.ReLU(),
            nn.Dense(512, 512, weight_init="normal", bias_init="zeros"),
            nn.ReLU(),
            nn.Dense(512, 10, weight_init="normal", bias_init="zeros")
        )

    def construct(self, x):
        x = self.flatten(x)
        logits = self.dense_relu_sequential(x)
        return logits

construct相当于前向计算,但不可直接调用。

模型层

        MindSpore为开发者提供了各种各样的模型层,本小节对上述简单的模型类的模型层进行简单介绍

  • nn.Flatten:将多维张量展开成连续的一维张量

  • nn.Dense:全连接层,使用权重和偏差对输入进行线性变换

  • nn.ReLU:ReLU激活函数层,给网络中加入非线性的激活函数,帮助神经网络学习各种复杂的特征

  • nn.SequentialCell:一个有序的Cell容器,输入Tensor将按照定义的顺序通过所有Cell,可以使用SequentialCell来快速组合构造一个神经网络模型。如果神经网络模型中存在跳着计算的Cell,则无法使用该Cell容器

  • nn.Softmax:Softmax层,将神经网络最后一个全连接层返回的logits的值缩放为[0, 1],表示每个类别的预测概率,常用于多分类场景

Jupyter在线运行情况

        使用MindSpore所提供的API搭建了一个简单的神经网络模型,并进行运行,然后查看模型相关的结构和参数,其运行结果如下:

MindSpore在搭建模型这方面的设计和其他AI框架差不多,上手简单快速。从今天的实践学习来看,MindSpore在接口名称和其他AI框架有些不同,模型层差不多,但是模型类的一些方法有些与众不同,应该是尤其独特的设计理念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值