我是pytorch的新手。在玩张量时,我观察到了两种类型的张量-
tensor(58)
tensor([57.3895])
Run Code Online (Sandbox Code Playgroud)
我打印了它们的形状,输出分别是 -
torch.Size([])
torch.Size([1])
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
您可以使用具有单个标量值的张量,如下所示:
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'>
Run Code Online (Sandbox Code Playgroud)
张量确实有大小或形状。这是一样的。这实际上是一个类torch.Size。您可以写信help(torch.Size)获取更多信息。任何时候你写t.shape,或者t.size()你都会得到那个尺寸信息。
张量的想法是它们可以对其内部数据具有不同的兼容大小维度,包括torch.Size([]).
任何时候你解压缩一个张量,它都会添加另一个维度 1。任何时候你压缩一个张量,它都会删除 1 的维度,或者一般情况下所有维度都是 1。
| 归档时间: |
|
| 查看次数: |
8673 次 |
| 最近记录: |