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

网络构建

神经网络模型由tensor操作和神经网络层构成。
MIndSporezhong,Cell是构建所有网络的基类,也是网络的基本单元。cell也由子cell构成。

定义模型类

# 继承nn.Cell类
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
model = Network()

这个网络的结构是
Flatten层:将输入的二维图像(28x28)展开成一维向量(784)。这一层是必要的,因为全连接层(Dense层)只能接受一维的输入。
Dense-ReLU 序列:
第一层 Dense(28*28, 512),将长度784的输入映射到512。正态分布初始化的权重和零初始化的偏置
一层 ReLU激活函数,添加非线性,使网络能够学习到复杂的模式。
第二层:Dense(512, 512),将长度512的输入映射到另一个512。
ReLU激活函数:再次添加非线性。
第三层:Dense(512, 10),将长度512的输入映射到10的输出。这里的10代表了分类任务中的10个类别(例如,数字0到9)。

由此可以得到这个网络的输入是28*28,输出是10。

使用模型预测

构建一个28*28的全一数据,输入模型得到模型的10维输出。

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

logits 的输出结果

Tensor(shape=[1, 10], dtype=Float32, value= [[-3.85994534e-03,
1.12577295e-03, -5.73400781e-03 … 3.27425171e-03, -2.65434897e-03, 2.91853398e-03]])

再增加一个softmax层来获取预测概率。softmax可以将每个类别的输出值映射到0-1之间的概率值,所有类别加起来的总和为1.

pred_probab = nn.Softmax(axis=1)(logits)
y_pred = pred_probab.argmax(1)

argmax(1) 找到 pred_probab 中概率最大的索引,也就是网络最终预测的一个具体类别。

模型层具体分析

这里还是由构建数据开始,构建一个shape为(3, 28, 28)的随机数据(3个28x28的图像)

input_image = ops.ones((3, 28, 28), mindspore.float32)

nn.Flatten

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

把输入的32828压扁(flatten)之后,flat_image的尺寸变成了3*784,也就是二维变一维。

nn.Dense

创建一个输入28*28,输出为20的全连接层。

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

将上述flatten过后的数据输入该层后,得到的形状是(3,20)

nn.ReLU

给网络中加入非线性的激活函数,帮助神经网络学习各种复杂的特征。

hidden1 = nn.ReLU()(hidden1)

nn.SequentialCell

nn.SequentialCell是一个有序的Cell容器。有序指输入的Tensor会根据定义的顺序通过所有Cell

seq_modules = nn.SequentialCell(flatten,layer1,nn.ReLU(),nn.Dense(20, 10)
)logits = seq_modules(input_image)

这里定义了一个包含flatten,之前定义全连接层,激活函数,新的长度20转10的全连接层。将我们的数据输入,会得到(3,10)向量。

nn.Softmax

在最后加入一个softmax将输出缩放到0-1

softmax = nn.Softmax(axis=1)
pred_probab = softmax(logits)

axis指输出的各个类别的数据和为1

模型参数

在前文中看到dense定义中可以定义bias和weight。这些参数会在训练中不断得到优化。

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

使用parameters_and_names()查看参数名和参数详情。可以看到每一层的情况。

Layer: dense_relu_sequential.0.weight
Size: (512, 784) Values : [[ 0.00794508 0.00425111 -0.01005943 …
0.00410124 -0.00289778 -0.00012033] [-0.00127386 -0.01262395 0.0012368 … 0.00155892 -0.01996486
0.00456555]]

Layer: dense_relu_sequential.0.bias Size: (512,) Values : [0. 0.]

Layer: dense_relu_sequential.2.weight Size: (512, 512) Values :
[[-0.00016954 0.00101638 0.00625031 … -0.01277918 0.01667405
0.01246558] [ 0.00640481 -0.00602338 0.01730538 … 0.00377386 -0.01358849 -0.00035654]]

Layer: dense_relu_sequential.2.bias Size: (512,) Values : [0. 0.]

Layer: dense_relu_sequential.4.weight Size: (10, 512) Values :
[[-0.01012482 0.0130543 0.0018377 … 0.01546062 0.00060095
0.01009192] [-0.0025501 0.01740856 -0.00141961 … -0.01067028 -0.00205624
0.01058894]]

Layer: dense_relu_sequential.4.bias Size: (10,) Values : [0. 0.]

1,3层是relu函数。因此没有参数输出。

总结

本章介绍了搭建神经网络的整体流程,对每一层如何使用及实现进行了详细阐述。

打卡凭证

在这里插入图片描述

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

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

相关文章

所以,这些AI产品都死了?? 创业就是一场大型狼人杀;独立开发者的营销流量密码;谷歌竟然搞砸过300个项目 | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 你可能不知道:Google Graveyard「埋葬」着 300 个被谷歌搞砸的项目 官网链接 → https://killedbygoogle.com Google Graveyard (Killed by Google…

【课程设计】基于python的一款简单的计算器

我们是大二本科生团队,主力两人耗时3天完成了这款计算器的制作。希望大家给我们多多引流!!!!!! 欢迎各位优秀的高考学子报考长安大学,报考长安大学电子信息工程专业。 欢迎有志于就…

游戏冻结工具 -- 雪藏HsFreezer v1.78

软件简介 HsFreezer是一款多功能游戏冻结工具,它允许用户随意暂停和继续游戏,同时具备系统优化和进程管理的功能。这款软件特别适合希望在游戏加载时间节省或在游戏与其他任务之间快速切换的用户。其主要特点包括快捷键操作、单锁模式的丝滑切换&#x…

音乐播放器小程序的设计

管理员账户功能包括:系统首页,个人中心,歌曲信息管理,会员优惠管理,用户管理,会员办理管理,歌曲分类管理,会员信息管理 微信端账号功能包括:系统首页,歌曲信…

人工智能--图像语义分割

个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏:专业知识 ​ 文章目录 🍉引言 🍉介绍 🍈工作原理 🍍数据准备 🍍特征提取 🍍像素分…

【数智化人物展】法大大黄翔:从他山之石看中国企业数智化升级的机会点

黄翔 本文由法大大创始人兼CEO黄翔投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着AI、云计算、大数据等技术的飞速发展,数智化转型升级已是全球企业的共识…

css flex 子元素溢出时,父元素被撑开解决方案

当父元素使用flex: 1;自适应填满时,子元素内容溢出,父元素内容撑大,导致页面显示问题,或设置了overflow 为scroll 的元素没出现滚动条等问题 解决方案: 1.如果是横向排列,flex: 1;的元素加上width: 0; 此…

调整分区失败致盘无法访问:深度解析与数据恢复全攻略

调整分区失败盘打不开的困境 在计算机的日常维护与管理中,调整磁盘分区是常见的操作之一,旨在优化存储空间布局、提升系统性能或满足特定应用需求。然而,当这一操作未能如预期般顺利进行,反而导致分区调整失败,进而使…

模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同

大家好,我是LvZi,今天带来模拟算法系列|替换所有的问号|提莫攻击|种花问题|Z字形变换|兼具大小写的英文字母|删除字符使频率相同 一.基本概念 模拟算法就是根据题意 模拟出代码的过程,模拟算法的题意往往都很简单,考验的是将思路转化为代码的能力,十分的锻炼代码能力,且能很好…

【日记】在街上跳舞被同事看见了(470 字)

正文 昨晚跳舞,照例在街上表演,被单位里的保洁阿姨撞见了…… 我以为这就完了,结果她还拍了视频发给做饭阿姨。晚上吃饭无意间聊起才知道有这回事。我竟一时间不知该哭还是该笑……. 今天非常非常闲。虽然不是没工作,只是我懒得去…

418天内第6次发布,科大讯飞星火大模型在跟谁赛跑?

常言道“一步慢,步步慢”,大模型市场瞬息万变,快人一步就是竞争的反转。 6月27日,科大讯飞如期公布星火大模型的最新进展:大模型底座七大核心能力得到全面提升,星火大模型V4.0可对标GPT-4 Turbo&#xff0…

软考系统架构师高效备考方法论

软考系统架构师高效备考方法论 本章总结的备考方法论也是希望能帮助更多的小伙伴高效的备考最终通过考试,这种考试个人感觉是尽量一次性考过, 要不然老拖着,虽然每年可以考两次,5月和11月,两次考试间隔5个月时间&#…

ELK日志实时监控

目录 一、ELK/EFK简介 1.1 什么是ELK/EFK? 1.2 常见架构 1、Elasticsearch Logstash Kibana 2、Elasticsearch Logstash Filebeat Kibana 3、Elasticsearch Logstash Filebeat Kibana Redis 4、Elasticsearch Fluentd Filebeat Kibana 1.3 基本流程 二、…

JVM专题之垃圾收集算法

标记清除算法 第一步:标记 (找出内存中需要回收的对象,并且把它们标记出来) 第二步:清除 (清除掉被标记需要回收的对象,释放出对应的内存空间) 缺点: 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需 要分配较大对象时,无法找到…

反射--通俗易懂

一、反射(Reflection) 反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 动态语言,是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他…

多重奖励拿到手软,OPENAIGC开发者大赛燃爆这个夏天!

你是否渴望在AI领域一展身手? 你是否拥有开创性的技术和创意? 2024 OPENAIGC开发者大赛就是你的最佳舞台! 不论你是经验丰富的开发者, 还是技术领域的创新者, 都有机会在这里大放异彩! 由联想拯救者、…

每日一题 7月1日

1 设数组data[m]作为循环队列的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为____ 2 采用滑动窗口机制对两个相邻结点A(发送方)和B(接收方)的通信过程进行流量控制。假定帧的序号长度为3比特,发送窗口与接收窗口的大小均为7,当A发送了…

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列

分析Profiler Timeline中的算子序列,通过寻找频繁项集的办法,得到TOPK可融合的算子序列 1.相关链接2.代码【仅分析带通信算子的Pattern】3.在实际工程中发现 [all_gather, matrix_mm_out]频率最高4.[Ascend MC2](https://gitee.com/ascend/MindSpeed/blob/master/docs/features…

1:25万基础电子地图(西藏版)

我们为你分享过四川版、云南版、江西版、贵州版、重庆版和青海版的1比25万基础电子地图,现在再为你分享西藏版的电子地图。 如果你需要西藏版的1比25万基础电子地图,你可以在文末查看该数据的领取方法。 基础电子地图西藏版 西藏版1:25万基础电子地图…

压缩pdf文件大小,压缩pdf文件大小软件哪个好

在数字化时代,PDF文件因其卓越的跨平台兼容性和稳定性而成为工作与学习的好帮手。然而,当PDF文件体积过大时,传输和存储便成了一项挑战。别担心,本文将为你揭秘如何快速压缩PDF文件,让你的文档轻装上路! 压…