我是pytorch的新手。在玩张量的时候,我观察到了两种类型的张量-
tensor(58)
tensor([57.3895])
我打印了它们的形状,输出分别是-
torch.Size([])
torch.Size([1])
两者之间的区别是什么?
发布于 2019-07-03 01:02:59
发布于 2019-07-03 01:23:46
您可以使用具有单个标量值的张量,如下所示:
import torch
t = torch.tensor(1)
print(t, t.shape) # tensor(1) torch.Size([])
t = torch.tensor([1])
print(t, t.shape) # tensor([1]) torch.Size([1])
t = torch.tensor([[1]])
print(t, t.shape) # tensor([[1]]) torch.Size([1, 1])
t = torch.tensor([[[1]]])
print(t, t.shape) # tensor([[[1]]]) torch.Size([1, 1, 1])
t = torch.unsqueeze(t, 0)
print(t, t.shape) # tensor([[[[1]]]]) torch.Size([1, 1, 1, 1])
t = torch.unsqueeze(t, 0)
print(t, t.shape) # tensor([[[[[1]]]]]) torch.Size([1, 1, 1, 1, 1])
t = torch.unsqueeze(t, 0)
print(t, t.shape) # tensor([[[[[[1]]]]]]) torch.Size([1, 1, 1, 1, 1, 1])
#squize dimension with id 0
t = torch.squeeze(t,dim=0)
print(t, t.shape) # tensor([[[[[1]]]]]) torch.Size([1, 1, 1, 1, 1])
#back to beginning.
t = torch.squeeze(t)
print(t, t.shape) # tensor(1) torch.Size([])
print(type(t)) # <class 'torch.Tensor'>
print(type(t.data)) # <class 'torch.Tensor'>
张量有一定的大小或形状。这是一样的。它实际上是一个类torch.Size
。您可以编写help(torch.Size)
来获取更多信息。任何时候你写t.shape
,或者t.size()
,你都会得到那个大小的信息。
张量的思想是,对于其中的数据,它们可以具有不同的兼容大小维度,包括torch.Size([])
。
任何时候你解压缩一个张量,它都会增加另一个维度1。任何时候你压缩一个张量,它都会去掉1的维度,或者在一般情况下,所有维度都是1。
发布于 2020-07-19 16:47:40
查看pytorch
中的tensor
文档
Docstring:
tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False) -> Tensor
Constructs a tensor with :attr:`data`.
然后描述数据是什么:
Args:
data (array_like): Initial data for the tensor. Can be a list, tuple,
NumPy ``ndarray``, scalar, and other types.
正如您所看到的,data
可以是一个标量(这是一个维度为零的数据)。
因此,为了回答你的问题,tensor(58)
是一个维度为0
的张量,tensor([58])
是一个维度为1
的张量。
https://stackoverflow.com/questions/56856996
复制相似问题