nn.Parameter

nn.Parameter

Pytorch torch.nn.Parameter
一种张量,可以认为是模块参数,神经网络参数。
参数是Tensor子类,当与Modules一起使用时具有非常特殊的属性-当它们被分配为Module属性时,它们会自动添加到其参数列表中,并且会出现在例如parameters()迭代器中。而张量则没有这种效应。这是因为人们可能想在模型中缓存一些临时状态,比如RNN的最后一个隐藏状态。如果没有Parameter这样的类,这些临时变量也会被注册。

classtorch.nn.parameter.Parameter(data=None, requires_grad=True)
Parameters:

  • data (Tensor) – 参数张量。
  • requires_grad (bool, optional) – 如果参数需要梯度。请注意,torch.no_grad() 上下文不会影响创建参数的默认行为–在 no_grad 模式下,参数的 requires_grad=True 值仍为 True。更多详情,请参阅本地禁用梯度计算。默认值: true

以上都是Pytorch的文档中的内容,其实说白了,torch.nn.Parameter就是一个张量,在神经网络的时候,它可以作为作为神经网络的训练的参数。虽然普通的tensor也可以通过设置requires_grad=True来得到梯度,但是它不能自动包括到model.Parameters()中,而nn.Parameter可以。

1
2
3
4
5
6
7
8
import torch
import torch.nn as nn
a=torch.tensor([1,2],dtype=torch.float32)
print('a', a)
print('nn.Parameter(a):', nn.Parameter(a))
# a tensor([1., 2.])
# nn.Parameter(a): Parameter containing:
# tensor([1., 2.], requires_grad=True)

nn.Parameter
http://jiqingjiang.github.io/p/a7eff039/
作者
Jiqing
发布于
2024年8月16日
许可协议