《昇思25天学习打卡营第5天|LXS》

网络构建

  • 如何手动构建一个神经网络模型就是今日的内容,神经网络是多层in-out通过relu连接起来的机器学习模型,也是最简单的机器学习模型。构建一个神经网络模型的步骤包括定义模型、

定义模型类

  • 定义一个模型,需要确定其每一层的输入通道数与输出通道数以及其他参数,在连接层定义激活函数,如下是输入一张
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
  • 实例化模型
model = Network()
  • 构造一个12828的输入数据,放入模型中
X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)

在这里插入图片描述

模型层

  • 首先我们自定义一个3通道图片,可以理解为三张
input_image = ops.ones((3, 28, 28), mindspore.float32)
print(input_image.shape)
  • Flatten:可以将图片张量28*28转为一维数组
  • Relu:含有多种非线性激活函数,激活函数通俗理解为神经兴奋输出1,不兴奋输出0,非线性函数的输出还有很多种。
  • Dense:为全连接层,进行线性变换,就是上述定义(in_channels=2828, out_channels=20),确定输出的通道数,打印输出的shape就是320
  • SequentialCell:用来对神经网络层进行快速组装,将转换方式、输入数据、激活函数、全连接层放入其中
seq_modules = nn.SequentialCell(
    flatten,
    layer1,
    nn.ReLU(),
    nn.Dense(20, 10)
)

logits = seq_modules(input_image)
  • Softmax:用来输出预测概率,输出值介于0-1之间。

模型参数

  • 神经网络层有权重参数与偏置参数,如下图的hasbias=true就是偏置参数,下图为一个三层神经网络模型,1和3都是relu()激活函数,是节点与节点之间的突出或者映射。初始输入的通道数为784,输出的通道数为512,注意上一个输出的通道数一定为下一层的输入通道数,神经网络可以看做是多层in-out-in,层数与参数越多效果越好。
    ![在这里插入图片在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值