PyTorch中参数与张量之间的差异

PyTorch中参数与张量之间的差异,pytorch,Pytorch,我想知道PyTorch参数和张量之间的区别 现有的是用于使用变量的旧PyTorch?这是单个图像中参数类(附加)的全部思想 因为它是从张量的子类,所以它是一个张量 但有一个窍门。模块内部的参数将添加到模块参数列表中。如果m是您的模块,m.parameters()将保存您的参数 以下是一个例子: class M(nn.Module): def __init__(self): super().__init__() self.weights = nn.Para

我想知道PyTorch参数和张量之间的区别


现有的是用于使用变量的旧PyTorch?

这是单个图像中
参数
类(附加)的全部思想

因为它是从
张量
的子类,所以它是一个张量

但有一个窍门。模块内部的参数将添加到模块参数列表中。如果
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)]
您可以看到参数将如何显示我们定义的内容。
如果我们只是在类中添加一个张量,比如
self.t=tensor
,它将不会显示在参数列表中。确实如此。没什么特别的。

我还是不明白其中的区别。添加了一个小示例,您可以通过添加一个张量作为类属性来改进示例,并检查差异。如果您可以从用例的角度添加它们的差异,那就太好了。什么时候应该使用张量,什么时候应该使用参数。以下是文档: