当前位置: 首页 > news >正文

昇思MindSpore学习入门-CELL与参数一

Cell作为神经网络构造的基础单元,与神经网络层(Layer)的概念相对应,对Tensor计算操作的抽象封装,能够更准确清晰地对神经网络结构进行表示。除了基础的Tensor计算流程定义外,神经网络层还包含了参数管理、状态管理等功能。而参数(Parameter)是神经网络训练的核心,通常作为神经网络层的内部成员变量。本节我们将系统介绍参数、神经网络层以及其相关使用方法。

Parameter

参数(Parameter)是一类特殊的Tensor,是指在模型训练过程中可以对其值进行更新的变量。MindSpore提供mindspore.Parameter类进行Parameter的构造。为了对不同用途的Parameter进行区分,下面对两种不同类别的Parameter进行定义:

  • 可训练参数。在模型训练过程中根据反向传播算法求得梯度后进行更新的Tensor,此时需要将required_grad设置为True。
  • 不可训练参数。不参与反向传播,但需要更新值的Tensor(如BatchNorm中的mean和var变量),此时需要将requires_grad设置为False。

在Cell的__init__方法中,我们定义了w和b两个Parameter,并配置name进行命名空间管理。在construct方法中使用self.attr直接调用参与Tensor运算。

获取Parameter

在使用Cell+Parameter构造神经网络层后,我们可以使用多种方法来获取Cell管理的Parameter。

获取单个参数

单独获取某个特定参数,直接调用Python类的成员变量即可。

可使用Cell.trainable_params方法获取可训练参数,通常在配置优化器时需调用此接口。

使用Cell.get_parameters()方法可获取所有参数,此时会返回一个Python迭代器

或者可以调用Cell.parameters_and_names返回参数名称及参数。

修改Parameter

直接修改参数值

Parameter是一种特殊的Tensor,因此可以使用Tensor索引修改的方式对其值进行修改。

可调用Parameter.set_data方法,使用相同Shape的Tensor对Parameter进行覆盖。该方法常用于使用Initializer进行Cell遍历初始化。

运行时修改参数值

参数的主要作用为模型训练时对其值进行更新,在反向传播获得梯度后,或不可训练参数需要进行更新,都涉及到运行时参数修改。由于MindSpore的使用静态图加速编译设计,此时需要使用mindspore.ops.assign接口对参数进行赋值。该方法常用于自定义优化器场景。下面是一个简单的运行时修改参数值样例:

import mindspore as ms

@ms.jit

def modify_parameter():

    b_hat = ms.Tensor([7, 8, 9])

    ops.assign(net.b, b_hat)

    return True

modify_parameter()

print(net.b.asnumpy())

Parameter Tuple

变量元组ParameterTuple,用于保存多个Parameter,继承于元组tuple,提供克隆功能。

如下示例提供ParameterTuple创建方法:

http://www.lryc.cn/news/396668.html

相关文章:

  • 【k8s中安装rabbitmq】k8s中安装rabbitmq并搭建镜像集群-hostpath版
  • (5) 深入探索Python-Pandas库的核心数据结构:Series详解
  • JAVA之开发神器——IntelliJ IDEA的下载与安装
  • 通过Umijs从0到1搭建一个React项目
  • Redis 数据过期及淘汰策略
  • vue vite+three在线编辑模型导入导出
  • 去水印小程序源码修复版-前端后端内置接口+第三方接口
  • 机器学习:预测评估8类指标
  • 【深度学习基础】MAC pycharm 专业版安装与激活
  • 排序相关算法--1.插入排序+冒泡排序回顾
  • 变阻器的故障排除方法有哪些?
  • 软考《信息系统运行管理员》-3.1信息系统设施运维的管理体系
  • Nginx重定向
  • 私有化地图离线部署方案之高程检索服务
  • PostgreSQL 中如何实现数据的增量更新和全量更新的平衡?
  • 数据结构--二叉树相关习题5(判断二叉树是否是完全二叉树 )
  • Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)
  • Python: 分块读取文本文件
  • 服务攻防——中间件Jboss
  • 宏碁F5-572G-59K3笔记本笔记本电脑拆机清灰教程(详解)
  • 基于FPGA的LDPC编译码算法设计基础知识
  • 国际网课平台Udemy上的亚马逊云科技AWS免费高分课程和创建、维护EC2动手实践
  • 空中交通新动能!2024深圳eVTOL展动力电池展区核心内容抢先看!
  • 代码江湖:Python 中的进程与线程
  • 根据H在有限域GF(2^m)上求解生成矩阵G
  • Django 实现子模版继承父模板
  • 数据安全治理:从库级权限申请到表级权限申请
  • vue3源码(六)渲染原理-runtime-core
  • python拆分Excel数据,自动发邮箱
  • 2024年福州延安中学夏季拿云杯拔尖创新人才素养测试(小高组)