昇思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…

【面试系列】系统运维工程师高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

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

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

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

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

函数返回值不能作为函数重载的条件,C++的函数重载是基于函数名和参数列表来识别的,而不是基于返回类型。

函数返回值不能作为函数重载的条件&#xff0c;因为C的函数重载是基于函数名和参数列表来识别的&#xff0c;而不是基于返回类型。 #include <iostream> using namespace std;// 函数重载&#xff1a; // 1、同一个作用域下 // 2、函数名称相同 // 3、函数参数类型不同&…

音乐播放器小程序的设计

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

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

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

Spring Data JPA使用及实现原理总结

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…

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

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

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

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

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

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

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

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

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

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

pdf转图片

前提 环境ubuntu22.04 lts,windows没有测试过。 今天想用wps pdf转换一下为图片,发现要收费!!!!为了省钱,只好撸代码了。说实话,这年头赚钱真的不容易,特别是程序员,但是我是一个运维也算半个程序员。 pip install pdf2image sudo apt-get install poppler-utils代…

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

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

C# Opacity 不透明度

WinForms Opacity以下是一些使用 Opacity 属性的示例&#xff1a;设置窗体的透明度&#xff1a;设置按钮的透明度&#xff1a;动态改变控件的透明度&#xff1a;使用定时器改变透明度&#xff1a;在窗体加载时设置透明度&#xff1a; 请注意另外 WPF Opacity以下是一些使用 Opa…

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

软考系统架构师高效备考方法论 本章总结的备考方法论也是希望能帮助更多的小伙伴高效的备考最终通过考试&#xff0c;这种考试个人感觉是尽量一次性考过&#xff0c; 要不然老拖着&#xff0c;虽然每年可以考两次&#xff0c;5月和11月&#xff0c;两次考试间隔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) 反射就是:加载类&#xff0c;并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 动态语言&#xff0c;是一类在运行时可以改变其结构的语言&#xff1a;例如新的函数、对象、甚至代码可以被引进&#xff0c;已有的函数可以被删除或是其他…