Mindspore网络构建

news2025/7/20 20:49:58

网络构建

神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同的子Cell构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。

 

构建Mnist数据集分类的神经网络

import mindspore
from mindspore import nn, ops

 个人理解:在代码层面也就是直接调用模块,通过模块来实现我们想要达成的效果。

定义模型类

定义神经网络时,可以继承nn.Cell类,在__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor操作。

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

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


#构建完成后,实例化Network对象,并查看其结构。

model = Network()
print(model)
Network<
  (flatten): Flatten<>
  (dense_relu_sequential): SequentialCell<
    (0): Dense<input_channels=784, output_channels=512, has_bias=True>
    (1): ReLU<>
    (2): Dense<input_channels=512, output_channels=512, has_bias=True>
    (3): ReLU<>
    (4): Dense<input_channels=512, output_channels=10, has_bias=True>
  >
>


#我们构造一个输入数据,直接调用模型,可以获得一个10维的Tensor输出,其包含每个类别的原始预测值。
X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)
print(logits)

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

模型层

分解上节构造的神经网络模型中的每一层。

input_image = ops.ones((5, 15, 18), mindspore.float32)
print(input_image.shape)

#输出结果

(5, 15, 18)


#nn.Flatten层的实例化

flatten = nn.Flatten()
flat_image = flatten(input_image)
print(flat_image.shape)

#nn.Dense全链层,权重和偏差对输入进行线性变换
layer1 = nn.Dense(in_channels=20*20, out_channels=20)
hidden1 = layer1(flat_image)
print(hidden1.shape)


#nn.ReLU层,网络中加入非线性的激活函数
print(f"Before ReLU: {hidden1}\n\n")
hidden1 = nn.ReLU()(hidden1)
print(f"After ReLU: {hidden1}")

#nn.SequentialCell容器配置
seq_modules = nn.SequentialCell(
    flatten,
    layer1,
    nn.ReLU(),
    nn.Dense(15, 10)
)

logits = seq_modules(input_image)
print(logits.shape)


#nn.Softmax全链层返回的值进行预测
softmax = nn.Softmax(axis=1)
pred_probab = softmax(logits)

参数模型

网络内部神经网络层具有权重参数和偏置参数

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.nn)

1.基本构成单元

接口名概述
mindspore.nn.CellMindSpore中神经网络的基本构成单元。
mindspore.nn.GraphCell运行从MindIR加载的计算图。
mindspore.nn.LossBase损失函数的基类。
mindspore.nn.Optimizer用于参数更新的优化器基类。

2.循环神经网络层

接口名概述
mindspore.nn.RNN循环神经网络(RNN)层,其使用的激活函数为tanh或relu。
mindspore.nn.RNNCell循环神经网络单元,激活函数是tanh或relu。
mindspore.nn.GRUGRU(Gate Recurrent Unit)称为门控循环单元网络,是循环神经网络(Recurrent Neural Network, RNN)的一种。
mindspore.nn.GRUCellGRU(Gate Recurrent Unit)称为门控循环单元。
mindspore.nn.LSTM长短期记忆(LSTM)网络,根据输出序列和给定的初始状态计算输出序列和最终状态。
mindspore.nn.LSTMCell长短期记忆网络单元(LSTMCell)。

3.嵌入层

接口名概述
mindspore.nn.Embedding嵌入层。
mindspore.nn.EmbeddingLookup嵌入查找层。
mindspore.nn.MultiFieldEmbeddingLookup根据指定的索引和字段ID,返回输入Tensor的切片。

4.池化层

接口名概述
mindspore.nn.AdaptiveAvgPool1d对输入的多维数据进行一维平面上的自适应平均池化运算。
mindspore.nn.AdaptiveAvgPool2d二维自适应平均池化。
mindspore.nn.AdaptiveAvgPool3d三维自适应平均池化。
mindspore.nn.AdaptiveMaxPool1d对输入的多维数据进行一维平面上的自适应最大池化运算。
mindspore.nn.AdaptiveMaxPool2d二维自适应最大池化运算。
mindspore.nn.AvgPool1d对输入的多维数据进行一维平面上的平均池化运算。
mindspore.nn.AvgPool2d对输入的多维数据进行二维的平均池化运算。
mindspore.nn.MaxPool1d对时间数据进行最大池化运算。
mindspore.nn.MaxPool2d对输入的多维数据进行二维的最大池化运算。

5. 图像处理层

接口名概述
mindspore.nn.CentralCrop根据指定比例裁剪出图像的中心区域。
mindspore.nn.ImageGradients计算每个颜色通道的图像渐变,返回为两个Tensor,分别表示高和宽方向上的变化率。
mindspore.nn.MSSSIM多尺度计算两个图像之间的结构相似性(SSIM)。
mindspore.nn.PSNR在批处理中计算两个图像的峰值信噪比(PSNR)。
mindspore.nn.ResizeBilinear使用双线性插值调整输入Tensor为指定的大小。
mindspore.nn.SSIM计算两个图像之间的结构相似性(SSIM)。

因为篇幅原因,这里就不全部介绍了,后面会继续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python】常见的正则表达式用法;匹配字符串

本文仅仅展现了python正则表达式中的一小部分内容&#xff0c;但是包含了实际应用中非常被频繁使用的例子&#xff0c;本文重在举例&#xff0c;即不需要相关语法知识就能够会用~ 目录re.match()re.findall()匹配两个字符串之间的字符串并返回匹配某字符串之前/之后的所有字符串…

matlab使用NCL提供的colormap

一、自带的colormap matlab默认提供了几个基础的colormap&#xff0c;比如常见的jet和parula matlab里调用colormap的命令是 colormap(jet) jet到底代表什么呢。 可以看到其表示n*3的矩阵&#xff0c;数字介于0-1之间&#xff0c;分别代表红绿蓝。 二、m_map的colormap m_…

数据库系统概论第六章(关系数据理论)知识点总结(2)—— 码的概念总结

本专栏收录了数据库的知识点&#xff0c;而从本文起&#xff0c;将讲述有关于关系数据理论中的第一范式、第二范式、第三范式以及BC范式有关知识点&#xff0c;提供给有需要的小伙伴进行学习&#xff0c;本专栏地址可以戳下面链接查看 &#x1f388; 数据库知识点总结&#xff…

今年的数据安全风险点是什么?看数据

2022年已接近尾声&#xff0c;降低数据安全风险&#xff0c;加强防御能力依然是政企发展中的重点和目标。 2022年全球网络安全、数据安全事件频发&#xff0c;钓鱼、勒索、欺诈等复合攻击层出不穷&#xff0c;这里对2022年部分时间段的数据进行统计&#xff0c;并且这一趋势很…

基于微信小程序的高校餐厅食品留样管理系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Mav…

图形学-几何-曲线与曲面

1.什么是曲线 我们使用一系列的点去定义一条曲线。这些控制点描述了曲线的一些性质。最常见的曲线叫做贝塞尔曲线&#xff08;Bzier Curve&#xff09;。 1.1 贝塞尔的画法 在三个点的情况下。在二维情况下&#xff0c;使用三个控制点画出的贝塞尔曲线称为二次贝塞尔曲线&am…

第三节.常用Linux命令—文件和目录

第三节.常用Linux命令—文件和目录 1.查看目录内容:ls 1).功能: 列出目录的内容 2).常用选项: 参数含义-a显示指定目录下所有子目录和文件&#xff0c;包含隐藏文件(以 开头的文件)-l以列表形式显示文件的详细信息-h配合 -l 以人性化的方式显示文件大小 3).计算机中文件大小…

【数据结构初阶】(栈和队列)图文详解四道oj+三道easy概念题

你也会感到孤独吗&#xff1f; 文章目录一、队列和栈的接口二、有效的括号2.1 思路呈现2.2 代码呈现细节讲解三、用队列实现栈3.1 思路呈现3.2 代码呈现细节讲解3.3 总结四、用栈实现队列4.1 思路呈现4.2 代码呈现细节讲解4.3 总结五、设计循环队列5.1 思路呈现5.2 数组5.3 链表…

海思3559AV100 gdb+gdbserver调试·基础篇

问题描述 随着程序越来越复杂&#xff0c;单靠输出信息调试程序已然是不合适的&#xff0c;所以必须考虑使用gdb调试&#xff0c;由于板子上比较难加载代码&#xff0c;所以最合适的办法应该是gdbgdbserver远程调试&#xff0c;这样我们可以清楚地看到程序的运行信息。gdb官方…

第三章 组合逻辑电路

思维导图 笔记 组合逻辑电路 电路在任意时刻的输出状态仅由该时刻的输入信号决定&#xff0c;与电路在此信号输入之前的状态无关。 组合逻辑电路的分析 分析步骤 ①根据逻辑电路图&#xff0c;写出输出逻辑函数的表达式 ②根据逻辑表达式&#xff0c;列出真值表 ③由真值表或…

前端动画的另一种方式 json动画

前言 一谈到前端动画&#xff0c;最先想到的就是css3&#xff0c;当然这是其中一种方式&#xff0c;甚至有许多动画库&#xff0c;aniamte.css就是其中的一种。 我之前也谈到过三种做前端动画的方式 https://blog.csdn.net/glorydx/article/details/116102127 但现在&#x…

linux笔记(2):vscode插件remote WSL远程使用交叉编译工具链(全志D1-H)

文章目录1.前期准备1.1 Windows有对WSL文件读写的权限1.2 WSL的C语言编译环境已经搭建完毕2.在windows的vscode安装remoteWSL插件3.从ubuntu启动windows端的vscode4.使用vscode编译ubuntu端的c文件4.1 在《tasks.json》指定可视化make命令4.2编写Makefile文件4.3 开始编译4.3.1…

27服务-安全访问状态转换

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文将介绍安全访问状态图——作为UDS27服务的规范性附件。 可参考前两篇文章&#xff1a; 27服务-SecurityAccess UDS - 深论Security Access Service 27服务的初衷就是防止无权限人员进行非法数据操作&#xff…

Day801.内存问题排查方案 -Java 性能调优实战

内存问题排查方案 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于内存问题排查方案。 碰到内存持续上升的情况&#xff0c;其实很难从业务日志中查看到具体的问题&#xff0c;那么面对多个进程以及大量业务线程&#xff0c;该如何精准地找到背后的原因呢&#xff1…

STM8S903K3基于ST Visual Develop开发定时器1中断示例

STM8S903K3基于ST Visual Develop开发定时器1中断示例 &#x1f4cc;相关篇《STM8S903K3T6C基于IAR开发GPIO点灯示例》 &#x1f389;在基于STVP环境下和IAR环境下&#xff0c;如果都使用寄存器操作&#xff0c;那么差异不大&#xff0c;主要在中断函数的书写上有差异。 &#…

QSystemTrayIcon——实现系统托盘

QSystemTrayIcon类 QSystemTrayIcon QSystemTrayIcon是qt中专门用于处理系统托盘的类 头文件#include qmakeQT widgetsSinceQt 4.2InheritsQObject QSystemTrayIcon 支持Windows、macos和部分Linux桌面环境&#xff0c;可以通过 QSystemTrayIcon::isSystemTrayAvailable()方…

0基础学习——了解操作符的那些事(一)

小叮当的任意门操作符分类1. 算数操作符2. 移位操作符二进制&#xff08;小插曲&#xff09;左移动操作符右移操作符3. 位操作符& 按位与 &按位或 |按位异或 ^赋值操作符复合赋值符单目操作符操作符分类 在这里我们有&#xff1a;算数操作符 移位操作符 等 今天我们就先…

uni-App获取地图address与高德地图API配合

现在使用获取地图&#xff0c;不需要再去安装sdk&#xff0c;只需要和我一样执行下方代码可以解决问题&#xff08;这里会从先获取经纬度&#xff0c;再到经纬度转成具体的地址&#xff0c;最后补充定位当前位置&#xff09;&#xff0c;并且当中会提及到很多&#xff0c;自己开…

深度学习模型的参数、计算量和推理速度统计

在没有过拟合的情况下&#xff0c;相同模型结构下&#xff0c;一般模型的参数量和计算量与最终的性能成正比&#xff0c;在比较不同模型性能时&#xff0c;最好能保持模型参数量和计算量在相同水平下&#xff0c;因此相应参数的统计很重要。这里只进行理论计算&#xff0c;最终…

MySQL的下载与安装

1. 下载地址 官网&#xff1a;https://www.mysql.com 2. 打开官网&#xff0c;点击DOWNLOADS 然后&#xff0c;点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 这里在Windows 系统下推荐下载 MSI安装程序 &#xff1b; 点击 My Go to Download Page…