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

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

1.1 目标参数

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

1.2 一次性访问所有参数

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

1.3 从嵌套快收集参数

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