Вы можете играть с тензорами, имеющими единственное скалярное значение, например:
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 или, в общем случае, все измерения одного.