昇思25天学习打卡营第06天 | 网络构建

昇思25天学习打卡营第06天 | 网络构建

文章目录

神经网络模型是由神经网络层和对Tensor的操作构成的。
在MindSpore, Cell类是网络的基本单元。一个神经网络模型表示为一个 Cell,它由不同的子 Cell构成。

定义网络

通过继承nn.Cell类,在__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor的操作。

python 复制代码
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()

网络层

  • nn.Flatten(start_dim=1, end_dim=-1):沿着从start_dim到end_dim的维度,对输入Tensor进行展平。
  • nn.Dense:全连接层,使用权重和偏差对输入进行线性变换。
  • nn.ReLU:给网络中加入非线性激活函数。
  • nn.SequentialCell:一个有序的Cell容器,将输入Tensor按定义的顺序依次通过所有Cell。
  • nn.Softmax:将网络最后一个全连接层返回的logits缩放为 0 , 1 0, 1 0,1,表示每个类别的预测概率,axis指定的维度数值和为 1 1 1。

模型预测

构造一个输入,直接调用模型,即可获得模型的输出 ,包含每个类别的原始预测值

model.construct()方法不可直接调用。

python 复制代码
X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)

通过nn.Softmax层实例来获得预测概率:

python 复制代码
pred_probab = nn.Softmax(axis=1)(logits)
y_pred = pred_probab.argmax(1)
print(f"Predicted class: {y_pred}")

模型参数

神经网络层具有权重参数和偏置参数,这些参数会在训练过程中不断进行优化。

-通过model.parameters_and_names()来获取参数名及对应的参数详情。

python 复制代码
print(f"Model structure: {model}\n\n")

for name, param in model.parameters_and_names():
    print(f"Layer: {name}\nSize: {param.shape}\nValues : {param[:2]} \n")

总结

通过这一节的学习,对MindSpore中的网络模型有了基础认识,通过对Cell类的继承,创建一个网络,并在__init__中定义和创建子Cell,并在construct中进行Tensor的操作。此外,还学习了Flatten、Dense、ReLU、SequentialCell、Softmax等基本网络层,还有通过`model.parameters_and_names()·访问模型参数的方法

打卡

相关推荐
La Pulga6 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石7 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK10 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道11 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
橙橙笔记12 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
Hhy_110716 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
山甫aa16 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
m0_5648768417 小时前
CMake学习
学习
只愿云淡风清17 小时前
正则表达式学习笔记 02:基础语法
笔记·学习·正则表达式
wangqiaowq20 小时前
Ontology 学习 二
学习