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

news2024/11/15 11:41:33

在学习和实践MindSpore神经网络模型构建的过程中,我深刻理解了MindSpore中如何通过nn.Cell类来构建和管理复杂的神经网络模型。通过这次的实践,我对神经网络的基本构建和应用有了更加全面的认识,以下是我学习过程中所总结的几点心得:

一、神经网络模型的基本构建

在MindSpore中,神经网络模型由神经网络层和Tensor操作构成。nn.Cell类是构建所有网络的基类,也是网络的基本单元。通过继承nn.Cell类并实现其__init__和construct方法,我们可以构建出各种复杂的神经网络结构。__init__方法用于进行子Cell的实例化和状态管理,而construct方法用于实现具体的Tensor操作。

例如,在构建一个用于Mnist数据集分类的神经网络模型时,我们定义了一个Network类,继承了nn.Cell。在__init__方法中,我们实例化了Flatten和SequentialCell子类,并在SequentialCell中定义了多层全连接层和激活函数ReLU。最后在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
二、模型实例化与结构查看

在完成模型构建后,我们可以通过实例化Network对象来查看其结构。通过print(model),我们可以清晰地看到模型中每一层的详细信息,包括输入和输出通道数、是否有偏置等。这对于我们理解模型的内部构造和调试非常有帮助。

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>
    >
  >
三、模型推理与输出

在实例化模型后,我们可以通过构造输入数据并直接调用模型来进行推理。需要注意的是,construct方法不可直接调用,我们可以直接通过模型实例来传入输入数据进行推理。通过这种方式,我们可以获得模型的输出Tensor。

X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)

通过进一步使用nn.Softmax层,我们可以将输出的logits值转化为预测概率,并通过argmax方法获得预测的类别。

pred_probab = nn.Softmax(axis=1)(logits)
y_pred = pred_probab.argmax(1)
print(f"Predicted class: {y_pred}")
四、逐层解析与理解

为了更好地理解神经网络的工作原理,我们可以逐层解析模型中的每一层。例如,我们可以构造一个shape为(3, 28, 28)的随机数据,并依次通过每一个神经网络层来观察其效果。

通过对nn.Flatten、nn.Dense、nn.ReLU等层的逐层解析,我们可以清晰地看到数据在每一层的变化过程。这对于我们理解神经网络的内部工作原理非常有帮助。

input_image = ops.ones((3, 28, 28), mindspore.float32)
flatten = nn.Flatten()
flat_image = flatten(input_image)
print(flat_image.shape)

layer1 = nn.Dense(in_channels=28*28, out_channels=20)
hidden1 = layer1(flat_image)
print(hidden1.shape)

hidden1 = nn.ReLU()(hidden1)
print(hidden1)
五、模型参数管理

神经网络中的每一层(如nn.Dense)都具有权重参数和偏置参数。这些参数会在训练过程中不断进行优化。我们可以通过model.parameters_and_names()来获取模型中所有参数的名称及其详细信息。

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

通过这次学习和实践,我掌握了在MindSpore中构建神经网络模型的基本方法和技巧。通过对模型逐层解析和参数管理的深入理解,我不仅提高了对神经网络内部工作原理的认识,也增强了实际操作的能力。这为我今后在深度学习领域的研究和应用打下了坚实的基础。
在这里插入图片描述

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

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

相关文章

一行Python代码实现数据清洗的18种方法

目录 1. 去除字符串两边空格 2. 转换数据类型 3. 大小写转换 4. 移除列表中的重复元素 5. 快速统计元素出现次数 6. 字符串分割成列表 7. 列表合并 8. 数据填充 9. 提取日期时间 10. 字符串替换 11. 快速排序 12. 提取数字 13. 空值处理&#xff08;假设是列表&am…

powe bi界面认识及矩阵表基本操作 - 1

powe bi界面认识及矩阵表操作 1. 界面认识1.1 选择数据源1.2 选择相关表及点击加载1.3 表字段显示位置1.4 表属性按钮位置1.5 界面布局按钮认识 2. 矩阵表基本操作2.1 选择矩阵表2.2 创建矩阵表2.3 设置字体大小2.4 行填充&#xff1a;修改高度2.5 列宽&#xff1a;设置列的宽度…

内置华为视频终端API接口的中央控制系统

内置华为视频终端API接口的中控系统是一种高度集成化的智能控制系统&#xff0c;它通过将华为视频终端的控制功能集成到中控系统中&#xff0c;实现了对华为视频终端的远程控制和集中管理。以下是对该系统的详细介绍&#xff1a; 一、系统概述 该系统通过调用华为视频终端提供…

自建网站统计工具 Umami 替代 Google Analytics

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 Umami 是一款开源的网站统计工具,与 Google Analytics 相比更加的轻量,且不会收集网站用户的个人信息。同时,Umami 的仪表盘界面简洁,UI 精美,方便我们查看网站的历史统计数据。 Umami 使用方式也与 Google Ana…

2024 微信小程序 学习笔记 第二天

1. WXML 模板语法 数据绑定 事件绑定 条件渲染 列表渲染 2. WXSS 模板样式 rpx 样式导入 全局和局部样式 3. 全局配置 window tabBar 配置tabBar案例 4. 网络数据请求 Get请求 Post 请求 加载时请求 5. 案例 -本地生活&#xff08;首页&#xff09; 导航栏 轮播图 九宫格效果…

MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~

一、基础操作与库命令 首先来介绍一些关于MySQL基础操作的命令&#xff0c;以及操作数据库相关的命令&#xff0c;MySQL中的所有命令默认是以;分好结尾的&#xff0c;因此在执行时一定要记得带上分号&#xff0c;否则MySQL会认为你这条命令还未结束&#xff0c;会继续等待你的…

mathtype7.4.4产品密钥mathtype7.4破解版mathtype 7.4.10密钥

“在数学中&#xff0c;符号是重要的。” 这是著名数学家陈省身的名言。对于很多科研人员来说&#xff0c;他们常常需要使用到各种复杂的公式和符号来描述他们的研究工作。然而&#xff0c;很多时候&#xff0c;这些公式和符号并不能很好地在文档或者网页上显示出来。 MathTyp…

【论文共读】【翻译】ShuffleNet v1:一种用于移动设备的极其高效的卷积神经网络

[原文地址] https://arxiv.org/pdf/1707.01083 [翻译] 0. 摘要 我们介绍了一种计算效率极高的CNN架构&#xff0c;称为ShuffleNet&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如&#xff0c;10-150 MFLOPs&#xff09;而设计。新架构利用了两个新操作&am…

Fastjson解析JSON时key对应的value存在多个英文双引号解决

情景 如上图所示&#xff0c;经常在解析json时会出现因双引号报错的问题。 fastjson解决方案 JSONObject jsonfile JSONObject.parseObject(json, Feature.OrderedField);JSONArray jsonArray jsonfile.getJSONObject("result").getJSONArray("items");…

c++最小生成树实现

文章目录 参考文章目的c实现 参考文章 点击访问 目的 实现参考文章中的图结构&#xff0c;并计算它的最小生成树 c实现 #include<iostream> #include<vector> #include<map>class Node { public:Node(const int val) :value(val) {}int value;std::map&…

Ubuntu 查询未更新的包 进行手动更新

lsb_release -a 查询ubuntu的版本号&#xff0c;我这边是20.04 apt list --upgradable 查询未更新的包 sudo apt --only-upgrade install php/focal 中间遇到输入选择&#xff0c;输入y即可

SpringBoot常用功能实现

1. 配置文件多环境配置 1.1 创建不同环境配置文件 文件名前缀和后缀为标准固定格式&#xff0c;不可以改变。 1.2 pom中加入文件配置 可以使用<activation>标签设置默认环境。 <profiles><profile><id>dev</id><activation><active…

yolov5进行识别安全帽

进行毕业设计 下载yolov5使用按照教程来进行就行注意事项&#xff08;有必要看看&#xff09;效果 总结 下载yolov5 地址是&#xff1a;https://github.com/ultralytics/yolov5 使用按照教程来进行就行 这里简单说一下&#xff1a; 下载需要的命令&#xff1a; pip install -…

【人工智能】AI绘画工具介绍

目录 引言 热门AI绘画工具 1. DeepArt 2. Artbreeder 3. DALLE 4. Deep Dream Generator 5. Midjourney 使用AI绘画工具的优势 知识扩展 1. 生成对抗网络&#xff08;GANs&#xff09; 2. 变分自编码器&#xff08;VAEs&#xff09; 3. 扩散模型&#xff08;Diffus…

vue 实现打字机效果

打字机效果组件&#xff0c;支持像打字机一样模仿键入文本。支持vue 插值语法和表格等打印 ps: 灵感来着于vue-type-writer 但是 这个组件过于简单 就自己整了一个 一、预览 二、代码 组件&#xff1a; <template><div :style"{ visibility: visibility }&qu…

皇后游戏1

先把这个推导看完 现在我们来讲一下总结 首先&#xff0c;我们要观察到 c i c_i ci​递增&#xff0c;这样才能更简单&#xff0c;就不用像国王游戏那样在交换前后比较 i i i和 j j j的max了&#xff08;就是说&#xff0c;国王游戏需要比较 m a x ( c i , c j ) max(c_i,c_j)…

酒店管理系统(C语言)

系统分析 本系统分为以下6大模块&#xff1a;顾客登记模块、查询顾客信息模块、查询空房间模块、预订房间模块、退订房间模块、保存并退出模块&#xff0c;如下图所示。 1. 顾客结构体 2. 主菜单的设计及实现 3. 登记顾客模块的实现 4. 查询顾客信息功能的实现 5. 查询空房间功…

ubuntu系统vscode调试c/c++大中型项目

文章目录 1. 插件2. 项目工程3. vsode的配置setting.jsonc_cpp_properties.json 4. 启动调试 前置阅读 vscode调试第一篇 1. 插件 c/c, cmake, cmake tools 2. 项目工程 对于我的项目需要用到很多的三方库&#xff0c;三方库的版本又会有很多&#xff0c;一般都是用cmake编译…

建图,链式前向星,拓扑排序

建图&#xff0c;链式前向星&#xff0c;拓扑排序 建图的三种方式1.邻接矩阵2.邻接表3.链式前向星 拓扑排序练习题-课程表字典序最小的拓扑排序拓扑排序模板题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 例题1.火星字典2.戳印序列 建图的三种方式 1.邻接矩阵 …

485,Modbus,开关量,UART,I2C,4-20mA,0-5V,TTL接口区别

工业和电子通信中最常见的几种类型&#xff0c;它们在数据传输方式、信号类型、通信协议、应用领域和物理特性上有所不同。下面分别解释这些接口的区别&#xff1a; 1. RS-485 类型&#xff1a;半双工差分信号传输。用途&#xff1a;用于长距离、多点通信场合&#xff0c;如楼…