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

【动手学深度学习】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.kler.cn/news/343537.html

相关文章:

  • 排序--DS
  • ARM编程--->ADC编程实例
  • 渗透测试入门学习——使用python脚本自动跟踪csrf_token实现对网站登录界面的暴力破解
  • Unity生成微信小游戏按钮坐标转换问题
  • JAVA思维提升案例5
  • C++ osgEarth 多窗口 同步绘制geometry
  • 股指期货的杠杆是怎么体现和使用的?
  • 最新PHP礼品卡回收商城 点卡回收系统源码_附教程
  • 旅游管理系统开发新篇章:SpringBoot技术解析
  • 基于SSM的线上学习网站【附源码】
  • ORM框架简介
  • JVM和GC案例详解
  • 进程同步问题
  • TCP连接的三次握手与四次挥手详解
  • 项目管理系统介绍,核心概念与操作技巧
  • Python3一些常用的SSH连接_paramiko使用
  • 调度算法-先来先服务
  • EtherNet IP网关HT3S-EIS-MDN读取七星华创CS310空气流量计数据应用案例
  • JavaScript 代码行前添加分号
  • 【部署分布式数据库DBMS】