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

时间:2019-06-21 17:56:53

标签: pytorch

我想知道PyTorch参数和Tensor之间的区别吗?

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

1 个答案:

答案 0 :(得分:0)

这是Parameter类(附加)在单个图像中的全部思想。

enter image description here

由于它是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)]

您将看到参数如何显示我们定义的内容。 而且,如果我们仅在类内添加张量,例如self.t = Tensor,则它不会显示在参数列表中。就是这样。没什么。