昇思25天学习打卡营第5天|MindSpore网络模型构建

打卡

目录

打卡

模型类

模型网络:定义与使用

模型层级分解

nn.Flatten 张量转换-演示查看

nn.Dense 全连接层-演示查看

nn.ReLU 非线性激活层-演示查看

nn.SequentialCell 有序网络容器

nn.Softmax 多分类概率预测

模型参数


前置感受:总的来说,使用Mindspore创建一个基本的网络结构是简单容易的,在动态图测试本节内容的情况下,同pytorch的区别不是很大。静态图下的情况没有测试。

模型类

mindspore.nn — MindSpore master 文档

  • mindspore.nn.Cell :构建所有网络的基类
  • AI编译框架分为两种运行模式,分别是动态图模式(又被称为PyNative模式)以及 静态图模式 (又被称为Graph模式)。MindSpore默认以动态图模式运行,但也支持手工切换为静态图模式。
    • 动态图的特点 是计算图的构建和计算同时发生(Define by run)。在调试模型时较为方便,能够实时得到中间结果的值,但由于所有节点都需要被保存,导致难以对整个计算图进行优化。
    • 静态图的特点 是将计算图的构建和实际计算分开(Define and run)。在Graph模式下,编译器可以针对图进行全局的优化,获得较好的性能,比较适合网络固定且需要高性能的场景。静态图模式先编译后执行的模式导致其存在编译耗时
      • 使用MindSpore API以及基于Tensor对象的操作更适合使用静态图编译优化。
      • Graph模式下,Python代码并不是由Python解释器去执行,而是将代码编译成静态计算图,然后执行静态计算图。因此,编译器无法支持全量的Python语法。MindSpore的静态图编译器维护了Python常用语法子集,以支持神经网络的构建及训练
    • context模式是一种全局的设置模式。代码示例如下。
import mindspore as ms ## 选动态图的配置
ms.set_context(mode=ms.PYNATIVE_MODE)  # 使用set_context进行动态图模式的配置## 选静态图的配置
ms.set_context(mode=ms.GRAPH_MODE)  # 使用set_context进行运行静态图模式的配置

模型网络:定义与使用

MindSpore中,Cell 类是构建所有网络的基类。如下代码,__init__方法中进行子Cell的实例化和状态管理,在construct方法中实现Tensor操作。model.construct()方法不可直接调用。

如下网络结构:先将Tensor数据展平到28*28维,再构建 [512,28*28] 的全连接层权重矩阵,经过激活函数后,再构建 [512,512] 的全连接层权重矩阵,再次经过激活函数后,再构建 [512,10] 的全连接层权重矩阵后,输出,

import mindspore
from mindspore import nn, opsclass 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 logitsmodel = Network()
print("查看模型网络结构:\n", model)X = ops.ones((1, 28, 28), mindspore.float32)
logits = model(X)
print("查看输入经过模型的输出值:\n", logits) 
print(type(logits))  # <class 'mindspore.common._stub_tensor.StubTensor'>
print(logits.shape)  # (1, 10)## 获得预测概率
pred_probab = nn.Softmax(axis=1)(logits)
y_pred = pred_probab.argmax(1)
print(f"Predicted class: {y_pred}")

模型层级分解

nn.Flatten 张量转换-演示查看

mindspore.nn.Flatten : 沿着从 start_dim 到 end_dim 的维度,对输入Tensor进行展平。

mindspore.nn.Flatten( start_dim=1,  ## 要展平的第一个维度。默认 1 。end_dim=-1  ## 要展平的最后一个维度。默认 -1 。)

nn.Dense 全连接层-演示查看

mindspore.nn.Dense :适用于输入的密集连接层,用权重和偏差对输入进行线性变换。

计算方式:y = activation(X * kernel + bias ) = 激活函数(输入数据 * 权重矩阵 + 偏置向量)

mindspore.nn.Dense(in_channels,  ## int,输入Tensor的空间维度out_channels, ## int,输出Tensor的空间维度weight_init=None, ## 默认 None,权重使用HeUniform初始化。bias_init=None, ## 默认 None,偏差使用Uniform初始化。has_bias=True, ## 默认 True, 使用偏置向量 activation=None, ## 可指定激活函数名,如’relu’,或具体激活函数,如 mindspore.nn.ReLU 。默认 Nonedtype=mstype.float32)

nn.ReLU 非线性激活层-演示查看

mindspore.nn.ReLU : 逐元素计算ReLU(Rectified Linear Unit activation function)修正线性单元激活函数。

计算方式:ReLU(x)=max(0, x)

nn.SequentialCell 有序网络容器

mindspore.nn.SequentialCell : 按照传入顺序依次添加神经网络 Cell, 可以通过初始化方式构建如下,也可像list一样通过 append(cell) 方式添加。

 

nn.Softmax 多分类概率预测

mindspore.nn.Softmax : 将多分类的结果以概率的形式展现出来,输出的数据类型和shape与输入的相同。

计算方式:

  1.  Softmax 函数对输入Tensor 在轴 axis 上的元素计算其指数函数值,然后归一化到 [0, 1] 范围,总和为1。
  2.  .argmax(dims=?) 表示沿着指定的轴找到最大值的索引,参数 1 表示沿着第二个轴。

模型参数查看

网络内部神经网络层具有权重参数和偏置参数,如 nn.Dense,这些参数会在训练过程中不断进行优化,通过 model.parameters_and_names() 可获取参数名及对应的参数详情。

mindspore.nn.Cell :parameters_and_names(name_prefix=''expand=True) 返回Cell中parameter的迭代器。包含参数名称和参数本身。expand 为True 则递归地获取当前Cell和所有子Cell的参数及名称;如果为 False ,只生成当前Cell的子Cell的参数及名称。

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

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

相关文章

Xilinx FPGA:vivado关于IIC的一些零碎知识点

一、简介 IlC(inter-Integrated circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信&#xff0c;在小数据量场合使用&#xff0c;传输距离短&#xff0c;任意时刻只能有一个主机等特性…

如何安全隐藏IP地址,防止网络攻击?

当您想在互联网上保持隐私或匿名时&#xff0c;您应该做的第一件事就是隐藏您的 IP 地址。您的 IP 地址很容易被追踪到您&#xff0c;并被用来了解您的位置。下面的文章将教您如何隐藏自己&#xff0c;不让任何试图跟踪您的活动的人发现。 什么是 IP 地址&#xff1f; 首先&am…

cv2.GaussianBlur()--sigmaX

目录 1 函数原型 2 原理 2.1 一维高斯分布 2 .2 二维高斯分布 3 总结 1 函数原型 def GaussianBlur(src, ksize, sigmaX, dstNone, sigmaYNone, borderTypeNone): # real signature unknown; restored from __doc__"""GaussianBlur(src, ksize, sigmaX[, …

C++·栈和队列

栈和队列是什么看这里&#xff1a; 数据结构栈和队列-CSDN博客文章浏览阅读948次&#xff0c;点赞25次&#xff0c;收藏26次。本节讲解了栈和队列的内容&#xff0c;其核心就是栈的特点是后进先出&#xff0c;队列的特点是先进先出。并用C语言实现了栈和队列的结构以及它们的各…

Mock.js 的使用方法代码示例

mock.js 的安装 npm install -D vite-plugin-mock mock.jsvite.config.ts配置&#xff1a; import { viteMockServe } from vite-plugin-mock import { userConfigExport, ConfigEnv } from viteexport default defineConfig(({ command }) > {return {plugins: [viteMock…

HTML5 学习笔记总结

1.1 什么是网页 1.2 什么是 HTML 1.3 网页总结 2.常用浏览器 3.Web 标准 3.1 为什么需要Web 标准 3.2 Web 标准&#xff08;重点&#xff09;

MyBatis的简介与使用

Mybatis JDBC操作数据库的缺点 存在大量的冗余代码。手工创建 Connection、Statement 等&#xff0c;效率低下。手工将结果集封装成实体对象。查询效率低&#xff0c;没有对数据访问进行优化。 Mybatis框架 简介 MyBatis 本是 apache 的一个开源项目 iBatis, 2010年这个项目由…

什么是静态住宅代理?一文看懂它

静态住宅代理&#xff08;也称为 ISP 代理&#xff09;是最流行的代理类型之一。它们也是隐藏身份和在线匿名的最佳方式之一。但是您需要了解它们什么&#xff1f;是什么让它们如此特别&#xff1f;为什么您要使用住宅代理而不是仅仅使用常规代理服务&#xff1f;如果你感兴趣&…

品牌推广必备:软文案例撰写与文案策划全解析!

做品牌推广&#xff0c; 不仅需要有推广渠道&#xff0c;文案的策划也是必不可少的一部分。文案是属于灵魂的部分。 作为一名手工酸奶品牌的创始人&#xff0c;目前全国也复制了100多家门店&#xff0c;这篇文章&#xff0c;详细和大家拆解&#xff0c;文案创作的要点&#xf…

OS-HACKNOS-2.1

确定靶机IP地址 扫描靶机开放端口信息 目录扫描 访问后发现个邮箱地址 尝试爆破二级目录 确定为wordpress站 利用wpscan进行漏洞扫描 #扫描所有插件 wpscan --url http://192.168.0.2/tsweb -e ap 发现存在漏洞插件 cat /usr/share/exploitdb/exploits/php/webapps/46537.txt…

STM32对数码管显示的控制

1、在项目开发过程中会遇到STM32控制的数码管显示应用&#xff0c;这里以四位共阴极数码管显示控制为例讲解&#xff1b;这里采用的控制芯片为STM32F103RCT6。 2、首先要确定数码管的段选的8个引脚连接的单片机的引脚是哪8个&#xff0c;然后确认位选的4个引脚连接的单片机的4…

【数据结构】栈的实现(含详细代码)

文章目录 1.栈1.1 栈的概念及结构1.2 栈的实现1.3 代码实现 1.栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守先进后…

[行业原型]线上药房系统高保真原型分享

​我国网上药店起步很早。 2005年12月份京卫大药店便率先拿到《互联网药品交易服务资格证书》&#xff0c;成为国内首家网上药店。随着互联网药品零售行业发展&#xff0c;2013年至2017年&#xff0c;网上药店市场规模从12亿元增至61亿元。 各家互联网药品零售企业在药品质量把…

pandas数据分析(8)

描述性统计量和数据聚合 描述性统计量 描述性统计量通过量化数据来概括数据集。DataFrame和Series可以通过sum、mean、count等方法来获取各种描述性统计量。在默认情况下会按照axis0返回一个Series&#xff0c;也就是说会得到一个有关列的统计量&#xff1a; 如果要计算行的统…

ubuntu 分区情况

ubuntu系统安装与分区指南 - Philbert - 博客园 (cnblogs.com)https://www.cnblogs.com/liangxuran/p/14872811.html 详解安装Ubuntu Linux系统时硬盘分区最合理的方法-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1711884

C# modbus验证

窗体 还有添加的serialPort控件串口通信 设置程序配置 namespace CRC {public static class CRC16{/// <summary>/// CRC校验&#xff0c;参数data为byte数组/// </summary>/// <param name"data">校验数据&#xff0c;字节数组</param>///…

新增多种图表类型,新增插件管理模块,DataEase开源数据可视化分析工具v2.8.0发布

2024年7月8日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.8.0版本。 这一版本的功能变动包括&#xff1a;图表方面&#xff0c;新增组合图、热力地图、符号地图、K线图等图表类型&#xff0c;并对已有的仪表盘、明细表、指标卡、富文本等图表类型进行了功…

「API取数」FDL获取金蝶云星空的单据数据

很多企业的ERP系统都在用金蝶云星空&#xff0c;金蝶云星空API是IT人员获取数据的重要来源&#xff0c; 常常用来生成定制化报表&#xff0c;进行数据分析&#xff0c;或是将金蝶云的数据与OA系统、BI工具集成。 通常情况下&#xff0c;IT人员需要使用Python、Java等语言编写脚…

栈 栈是一种数据结构&#xff0c;只允许在固定一端进行插入和删除功能&#xff0c;进行插入和删除的一端叫做栈顶&#xff0c;另一端叫做栈底&#xff0c;遵循后入先出的规则&#xff0c;就像穿烤串和吃烤串一样 其中&#xff0c;插入数据叫做进栈/压栈/入栈&#xff0c;数据插…

windows obdc配置

进入控制面板&#xff1a; 进入管理工具&#xff1a;