昇思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.rhkb.cn/news/366993.html

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

相关文章

ElasticSearch 和 MySQL的区别

MySQLElasticSearch 数据库(database)索引(index)数据表(table) 类型(type) 记录文档(document,json格式) 一、ES基础命令 1. ES cat查询命令 2.…

分布式技术专题 | TCP在分布式网络中的通信机制与底层实现

深入解析分布式网络中的TCP通信协议实现 跨地域通信与资源共享网络节点与主机的定义网络技术通信机制TCP/IP协议模型TCP/IP分层机制TCP的Socket链接处理控制TCP的优势和特性自动差错控制正确性和有序性 TCP的Socket使用端口在应用程序间通信TCP的Socket使用端口套接字操作 跨地…

uniapp封装虚拟列表滚动组件

uniapp封装虚拟列表滚动组件 这里用到一个列表&#xff0c;然后数据可能有很多很多…&#xff0c;一次性全部渲染到dom上会卡顿&#xff0c;很废性能&#xff0c;于是用了这个虚拟列表就变丝滑很多很多。 组件mosoweInventedList 代码&#xff1a; <!-- 虚拟滚动列表组件&a…

GPT-4o首次引入!全新图像自动评估基准发布!

目录 01 什么是DreamBench&#xff1f; 02 与人类对齐的自动化评估 03 更全面的个性化数据集 04 实验结果 面对层出不穷的个性化图像生成技术&#xff0c;一个新问题摆在眼前&#xff1a;缺乏统一标准来衡量这些生成的图片是否符合人们的喜好。 对此&#xff0c;来自清华大…

mysql主键自增连续新增时报错主键重复-Duplicate entry “x” for key PRIMARY

mysql主键自增连续新增时报错主键重复 1、mysql数据库设置数据库主键自增的规律 id -- AUTO_INCREMENT2、可视化工具查看自增没问题 3、问题描述 新增第一个时操作成功&#xff0c;新增第二个时候操作失败报错&#xff1a; Duplicate entry “x” for key PRIMARY4、分析&a…

千益畅行,旅游卡,如何赚钱?

​ 赚钱这件事情&#xff0c;只有自己努力执行才会有结果。生活中没有幸运二字&#xff0c;每个光鲜亮丽的背后&#xff0c;都是不为人知的付出&#xff01; #旅游卡服务#

简过网:考公务员难度大吗,一般考几年才上岸!

先调查一下&#xff0c;大家考公务员都是几年才上岸的&#xff1f; 最近有网友私信小编&#xff0c;普通人考公要准备多久才能上岸&#xff0c;其实对于多久能上岸这个问题&#xff0c;并没有一个准确的数字&#xff0c;众所周知&#xff0c;公务员考试是有一定难度的&#xf…

Git入门 本地仓库 远端仓库 多分支

Git入门 Git入门本地git初始化git仓库初始化 创建远端仓库githubgitee 指定远端仓库推送至远端多分支将feature分支合并至dev分支 其他开发者 Git入门 本地git初始化 git仓库初始化 mkdir myrepo # 创建仓库文件夹 cd myrepo/ # 进入目录 git init # 初始化git仓库 (创建.g…

C - Popcorn(abs358)

题意&#xff1a;有n个摊子&#xff0c;m个爆米花&#xff0c;想花费最少去的店铺买到所有的口味的爆米花&#xff0c;找到每一列都为‘o’的最少行数。 分析&#xff1a;用dfs寻找最少路径 #include<bits/stdc.h> using namespace std; typedef long long ll; char x;…

CAN通信波形【示波器抓取】

在测试bms系统过程中&#xff0c;在上位机发现无法读取CAN通信&#xff0c;尝试使用示波器抓取CAN通信波形&#xff0c;&#xff0c;去确定CAN通信是否正常。 做一想要从车上测出can总线上的数据还不太容易。 于是我首先使用示波器&#xff08;我使用的示波器型号是TDS 220&am…

第十四届蓝桥杯省赛C++B组E题【接龙数列】题解(AC)

需求分析 题目要求最少删掉多少个数后&#xff0c;使得数列变为接龙数列。 相当于题目要求求出数组中的最长接龙子序列。 题目分析 对于一个数能不能放到接龙数列中&#xff0c;只关系到这个数的第一位和最后一位&#xff0c;所以我们可以先对数组进行预处理&#xff0c;将…

opencascade AIS_InteractiveContext源码学习7 debug visualization

AIS_InteractiveContext 前言 交互上下文&#xff08;Interactive Context&#xff09;允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是&#xff0c;对于已经被交互上下文识别的交互对象&#xff0c;必须使用上下文方法进行…

JVM专题十一:JVM 中的收集器一

上一篇JVM专题十&#xff1a;JVM中的垃圾回收机制专题中&#xff0c;我们主要介绍了Java的垃圾机制&#xff0c;包括垃圾回收基本概念&#xff0c;重点介绍了垃圾回收机制中自动内存管理与垃圾收集算法。如果说收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回…

OBS 免费的录屏软件

一、下载 obs 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程-CSDN博客 二、使用 obs & 输出无黑屏 【OBS任意指定区域录屏的方法-哔哩哔哩】 https://b23.tv/aM0hj8A OBS任意指定区域录屏的方法_哔哩哔哩_bilibili 步骤&#xff1a; 1&#xff09;获取区域…

【智能算法】目标检测算法

目录 一、目标检测算法分类 二、 常见目标检测算法及matlab代码实现 2.1 R-CNN 2.1.1 定义 2.1.2 matlab代码实现 2.2 Fast R-CNN 2.2.1 定义 2.2.2 matlab代码实现 2.3 Faster R-CNN 2.3.1 定义 2.3.2 matlab代码实现 2.4 YOLO 2.4.1 定义 2.4.2 matlab代码实现…

[开源软件] 支持链接汇总

“Common rules: 1- If the repo is on github, the support/bug link is also on the github with issues”" label; 2- Could ask questions by email list;" 3rd party software support link Note gcc https://gcc.gnu.org openssh https://bugzilla.mindrot.o…

作业7.2

用结构体数组以及函数完成: 录入你要增加的几个学生&#xff0c;之后输出所有的学生信息 删除你要删除的第几个学生&#xff0c;并打印所有的学生信息 修改你要修改的第几个学生&#xff0c;并打印所有的学生信息 查找你要查找的第几个学生&#xff0c;并打印该的学生信息 1 /*…

WSL2安装ContOS7并更新gcc

目录 WSL2安装CentOS7下载安装包安装启动CentOS7 CentOS7更换国内源gcc从源码安装gcc卸载gcc CMake中使用gcc关于linux配置文件参考 WSL2安装CentOS7 Windows11官方WSL2已经支持Ubuntu、Open SUSE、Debian。但是没有centos&#xff0c;所以centos的安装方式略有不同。 下载安…

VehicleSPY的安装与使用

VehicleSPY介绍 Vehicle Spy 是美国英特佩斯公司的一款集成了诊断、节点/ECU仿真、数据获取、自动测试和车内通信网络监控等功能的工具&#xff0c;Vehicle Spy软件支持的应用场景很多&#xff0c;无法一一列举&#xff0c;以下是一些常见的应用&#xff1a; 总线监控&#x…

解锁IDEA中Git/SVN Issue Navigation功能:80%程序员都不懂的秘密武器~

文章目录 前言什么是 Git Issue Navigation&#xff1f;配置 Git Issue Navigation1. 打开设置2. 导航到 Issue Navigation 设置3. 添加新的 Issue Navigation 规则具体示例配置 使用 Git Issue Navigation在提交信息中使用 Issue ID实际导航到连接 优点1. 快速定位问题2. 提高…