PyTorch 中参数与张量的区别

Dex*_*Dex 5 pytorch

我想知道 PyTorch Parameter 和 Tensor 之间的区别?

现有答案适用于使用变量的旧 PyTorch?

pro*_*sti 5

这是Parameter单个图像中的类(附加)的整个想法。

在此处输入图片说明

因为它是从Tensor它是一个张量的子类。

但是有一个技巧。模块内部的参数被添加到模块参数列表中。如果m是您的模块m.parameters()将保存您的参数。

这是示例:

class M(nn.Module):
    def __init__(self):
        super().__init__()
        self.weights = nn.Parameter(torch.randn(2, 2))
        self.bias = nn.Parameter(torch.zeros(2))

    def forward(self, x):
        return x @ self.weights + self.bias

m=M()
m.parameters()
list(m.parameters())

---

[Parameter containing:
 tensor([[ 0.5527,  0.7096],
         [-0.2345, -1.2346]], requires_grad=True), Parameter containing:
 tensor([0., 0.], requires_grad=True)]
Run Code Online (Sandbox Code Playgroud)

您会看到参数将如何显示我们定义的内容。如果我们只是在一个类中添加一个张量,比如self.t = Tensor,它不会显示在参数列表中。字面意思就是这样。没有什么花哨。