【动手学深度学习】5.2 参数管理(个人向笔记+代码注释)

  • 之前的课程中,我们只是通过深度学习框架完成训练的工作,而忽略了操作参数的具体细节。
  • 所以我们我们介绍的内容有:
    • 访问参数,用于调试,诊断和可视化
    • 参数初始化
    • 在不同的模型组件间共享参数
  • 下面是一个有单隐藏层的多层感知机
    在这里插入图片描述

1. 参数访问

  • 如果我们是通过Sequential来定义模型的,那么我们就可以通过下标来访问参数。如下我们检查了第二个全连接层的参数
    在这里插入图片描述
  • 输出的结果有两个信息:
    • 这个全连接层包含两个参数:该层的权重和偏置
    • 两者都储存为单精度浮点数(注意参数名称标识每一个参数)

1.1 目标参数

  • 每个参数都表示为参数类
  • 下面提取了第二个全连接层的偏置,提取后返回的是一个参数类实例,并进一步访问该参数的值
    在这里插入图片描述
  • 参数是复合的对象,包含值,梯度和额外信息。所以我们需要显示地去访问参数的值,除了值之外我们还可以访问每个参数的梯度。
  • 在上面的网络,我们还没有调用反向传播,所以还没有梯度
    在这里插入图片描述

1.2 一次性访问所有参数

  • 对所有参数进行操作时,逐个访问可能会有点麻烦
  • 而在处理复杂的块,比如嵌套快时。情况可能会变得特别复杂,我们需要递归整棵树来获取每个子块的参数
  • 下面我们看看如何访问第一个全连接层和所有层
    在这里插入图片描述
  • 由上面的结果我们发现还可以这样来访问网络参数
    在这里插入图片描述

1.3 从嵌套快收集参数

  • 我们可以看看当多个块相互嵌套时,参数是如何命名的,我们定义一些生成块的函数,然后将这些块组合到更大的块中
    在这里插入图片描述
  • 我们print这个网络看看是怎么样的
    在这里插入图片描述
  • 由于层是分层嵌套的,所以我们也可以嵌套列表索引来访问它们。下面我们访问第一个块中的第二个子块的第一个偏置
    在这里插入图片描述

2. 参数初始化

  • 深度学习框架默认随机初始化,也允许我们自定义初始化
  • 默认情况下:PyTorch会根据一个范围均匀地随机初始化权重和偏置矩阵,这个范围是根据输入和输出的维度计算的。
  • PyTorch的nn.init模块提供了多种预置初始化方法

2.1 内置初始化

  • 我们首先调用内置的初始化器,下面的代码将所有权重参数初始化为0.01的高斯随机变量,且将偏置参数设置为0
    在这里插入图片描述
  • 也可以将所有参数初始化为给定的常数
    在这里插入图片描述
  • 还可以对不同的块用不同的初始化方法,用下标标识即可
    在这里插入图片描述
  • 对于上面的Xavier初始化,介绍如下:
    在这里插入图片描述

2.2 自定义初始化

  • 有时框架里面没有我们需要的初始化方法,这时我们就需要自己定义初始化
  • 下面我们用以下的方法来初始化权重
    在这里插入图片描述
  • 实现如下
    在这里插入图片描述
  • 我们始终可以直接去设置参数
    在这里插入图片描述

2.3 参数绑定

  • 有时候我们希望多个层之间共享参数,我们可以定义一个稠密层,然后用它的参数来设置另一个层的参数
    在这里插入图片描述
  • 这个例子表明第三个和第五个神经网络是绑定的。它们不仅值相等,而且由相同的张量表示。因此我们只要改变其中一个的参数,另一个的参数也会改变
  • 当参数绑定时,梯度会发生什么情况?答案时由于模型参数包含梯度,因此在反向传播时第三个神经网络层和第五个神经网络层的梯度会加在一起

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

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

相关文章

如何把视频变成自己的原创?提升视频原创度的7个技巧

在短视频平台发布作品时,时常因为原创问题,而被限流。如何在海量视频中脱颖而出,让自己的作品具有独特性和原创性,是每位创作者都需要思考的问题。本文将详细介绍如何通过一系列前期准备和后期处理技巧,将视频素材转化…

模版进阶 非类型模版参数

一.模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。 #i…

乌班图基础设施安装之Mysql8.0+Redis6.X安装

简介:云服务器基础设施安装之 Mysql8.0Redis6.X 安装 Docker安装 # 按照依赖 yum install -y yum-utils device-mapper-persistent data lvm2 Docker Mirror 从去年开始. hub.docker.com[1] 在国内的访问速度极慢. 当时大家主要还是依赖国内的一些镜像源: 如中科…

操作系统 | 学习笔记 | 王道 | 4.3 文件系统

4.3 文件系统 4.3.1 文件系统结构 文件系统(File system)提供高效和便捷的磁盘访问,以便允许存储、定位、提取数据。 用一个例子来辅助记忆文件系统的层次结构: 假设某用户请求删除文件"D:/工作目录/学生信息.xIsx"的最后100条记录。 用户需…

在 Windows 11 安卓子系统中安装 APK 的操作指南

这个软件好像不可以在纯android系统中使用(不知道是缺了什么),其他对于android的虚拟机要不缺少必要功能组件,要不性能过于低下。本方法致力于在带有谷歌框架WSA中运行该APK 在 Windows 11 安卓子系统中安装 APK 的操作指南 本指…

消息摘要算法

算法特点 a) 消息摘要算法/单向散列函数/哈希函数 b) 不同长度的输入,产生固定长度的输出 c) 散列后的密文不可逆 d) 散列后的结果唯一 e) 哈希碰撞 f) 一般用于校验数据完整性、签名sign 由于密文不可逆,所以服务端也无法解密 想要验证&#xf…

前端 | Uncaught (in promise) undefined

前端 | Uncaught (in promise) undefined 最近开发运行前端项目时,经常预计控制台报错 ,如下图: 这里我总结下,这种报错的场景和原因,并通过实际代码案例帮助小伙伴更好理解下 。 文章目录 前端 | Uncaught (in promi…

若依前端后打成一个JAR包部署

客户需要将项目前后端作为一个整体打包成jar,不使用nginx方式转发。使用框架是若依前后端分离,后端springboot,前端vue,目的就是把vue打入jar。 一、前端修改 ruoyi-ui/src/router/index.js文件 ,将 mode: ‘history’…

vue-jsonp的使用和腾讯地图当前经纬度和位置详情的获取

1.下载: npm install –save vue-jsonp2.main.js中引入: //腾讯逆地址解析会用到jsonp import {VueJsonp} from vue-jsonp; Vue.use(VueJsonp);3.腾讯地图中使用 uniapp中获取*经纬度*和通过经纬度获取当前**位置详情** //获取当前经纬度 getLocation…

职场上的人情世故你知多少

1.发微信找人帮忙,半天不回,那基本没戏了,不要再打扰了,懂得都懂。 2.能力越大,事情越多,要懂得张弛有度,不要把自己全抛出去,给自己留点余地,毕竟你不知道别人如何暗地…

Windows电脑本地安装AI文生音乐软件结合内网穿透远程访问制作

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 今天和大家分享一下在Windows系统电脑上本地快速部署一个文字生成音乐的AI创作服务MusicGPT,并结合cpolar内网穿透工具实现随时随地远程访问使用进行AI音…

光伏“地图导航”:光照、政策、电价一目了然

当代的快节奏生活中,地图导航的精准定位技术如同一盏照明灯,为我们照亮了前方的道路。许多光伏人纷纷反映,如果光伏也有这样的地图就好了,能够结合各种建设光伏的因素快速完成选址,能够极大地提高效率。今天小编就来分…

PAT甲级-1013 Battle Over Cities

题目 题目大意 给定一个城市图,如果攻陷一个城市,该城市连接的所有路都要被销毁。要求计算出连通剩余的城市最少需要修建几条路。该图有n个顶点,m条边,k个重点城市。分别求出每个重点城市被攻陷,连通剩余城市需要修建…

[面试] java开发面经-1

前言 目录 1.看到你的简历里说使用Redis缓存高频数据,说一下Redis的操作 2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩 3.你的项目中使用了ThreadLocal,那么当有两个请求同时发出时,会怎么处理,可以同时处理两个请求吗 4.使用…

【GESP】C++一级练习BCQM3037,简单计算,国庆七天乐收官

又回到了简单计算的题目,继续巩固练习。 题解详见:https://www.coderli.com/gesp-1-bcqm3037/ 【GESP】C一级练习BCQM3037,简单计算,国庆七天乐收官 | OneCoder又回到了简单计算的题目,继续巩固练习。https://www.cod…

内网渗透-隧道代理转发

文章目录 前言环境搭建工具清单工具使用Frp命令执行实验 Lcx命令执行实验 reGeorg命令执行实验Proxifier ew(EarthWorm)正向代理命令执行实验 反向代理命令执行实验SocksCap netsh命令执行 pingtunnel命令执行实验 ngrok命令执行&&实验 cs命令执行实验 前言 本文章介绍…

10/11

一、ARM课程大纲 二、ARM课程学习的目的 2.1 为了找到一个薪资水平达标的工作(单片机岗位、驱动开发岗位) 应用层(APP) 在用户层调用驱动层封装好的API接口,编写对应的API接口 ----------------------------------------------------…

Redis:通用命令 数据类型

Redis:通用命令 & 数据类型 通用命令SETGETKEYSEXISTSDELEXPIRETTLTYPEFLUSHALL 数据类型 Redis的客户端提供了很多命令用于操控Redis,在Redis中,key的类型都是字符串,而value有多种类型,每种类型都有自己的操作命…

pytorch 与 pytorch lightning, pytorch geometric 各个版本之间的关系

主要参考 官方的给出的意见; 1. pytorch 与 pytorch lightning 各个版本之间的关系 lightning 主要可以 适配多个版本的 torch; https://lightning.ai/docs/pytorch/latest/versioning.html#compatibility-matrix; 2. pytorch 与 pytorch geometric 各…

ComfyUI | 5分钟部署最新Flux大模型

Midjourney 和 Stable Diffusion 都是目前流行的 AI 图像生成工具,它们能够根据文本描述生成高质量的图像。都是基于深度学习技术的文本到图像生成模型,但它们各自基于不同的大模型。 但最近推出了一款比前两者更强大,生成图像更加逼真&…