- 如果我们是通过
Sequential
来定义模型的,那么我们就可以通过下标来访问参数。如下我们检查了第二个全连接层的参数
- 输出的结果有两个信息:
- 这个全连接层包含两个参数:该层的权重和偏置
- 两者都储存为单精度浮点数(注意参数名称标识每一个参数)
1.1 目标参数
- 每个参数都表示为参数类
- 下面提取了第二个全连接层的偏置,提取后返回的是一个参数类实例,并进一步访问该参数的值
- 参数是复合的对象,包含值,梯度和额外信息。所以我们需要显示地去访问参数的值,除了值之外我们还可以访问每个参数的梯度。
- 在上面的网络,我们还没有调用反向传播,所以还没有梯度
1.2 一次性访问所有参数
- 对所有参数进行操作时,逐个访问可能会有点麻烦
- 而在处理复杂的块,比如嵌套快时。情况可能会变得特别复杂,我们需要递归整棵树来获取每个子块的参数
- 下面我们看看如何访问第一个全连接层和所有层
- 由上面的结果我们发现还可以这样来访问网络参数
1.3 从嵌套快收集参数
- 我们可以看看当多个块相互嵌套时,参数是如何命名的,我们定义一些生成块的函数,然后将这些块组合到更大的块中
- 我们
print
这个网络看看是怎么样的
- 由于层是分层嵌套的,所以我们也可以嵌套列表索引来访问它们。下面我们访问第一个块中的第二个子块的第一个偏置