Parameter是Tensor子类,当与Module一起使用时,它们具有非常特殊的属性——当它们被分配为Module属性时,它们会自动添加到其参数列表中,并将出现在例如Parameters()迭代器中。分配张量没有这样的效果。这是因为人们可能想在模型中缓存一些临时状态,比如RNN的最后一个隐藏状态。
torch.nn.parameter.Parameter(data=None, requires_grad=True)
参数说明:
data (Tensor) :– parameter tensor.
requires_grad (bool, optional):如果参数需要梯度。请注意,torch.nograd()上下文不会影响参数创建的默认行为——在no_grad模式下,参数仍将具有requires_grad=True。有关更多详细信息,请参阅本地禁用梯度计算。默认值:True
UninitializedParameter意为:未初始化的参数。
UninitializedParameter是torch.nn.Parameter的一种特殊情况,其中数据的形状是未知的。
与torch.nn.Parameter不同,UninitializedParameter不包含任何数据,尝试访问某些属性(如它们的形状)将抛出运行时错误。可以对未初始化的参数执行的唯一操作是更改其数据类型、将其移动到不同的设备以及将其转换为常规的torch.nn.Parameter。
在构建过程中,可以使用device="CUDA"等设置参数具体化时使用的默认设备或dtype类型,代码如下所示:
torch.nn.parameter.UninitializedParameter(requires_grad=True, device=None, dtype=None)
UninitializedParameter多用于lazy模块