Метод unsqueeze
Метод unsqueeze добавляет новое измерение (ось) в тензор на заданную позицию.
Это полезно, когда нужно привести тензор к форме, ожидаемой некоторыми операциями,
например, при работе с пакетами данных в нейронных сетях.
Метод принимает один обязательный параметр - позицию, на которую будет вставлена новая ось.
Новая ось будет иметь размерность 1.
Синтаксис
tensor.unsqueeze(dim)
Пример
Давайте добавим новое измерение в начало тензора:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print("Original shape:", t.shape)
res = t.unsqueeze(0)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: torch.Size([5])
New shape: torch.Size([1, 5])
tensor([[1, 2, 3, 4, 5]])
Пример
Давайте добавим новое измерение в конец тензора:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print("Original shape:", t.shape)
res = t.unsqueeze(1)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: torch.Size([5])
New shape: torch.Size([5, 1])
tensor([[1],
[2],
[3],
[4],
[5]])
Пример
Давайте добавим новое измерение между существующими для двумерного тензора:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6]
])
print("Original shape:", t.shape)
res = t.unsqueeze(1)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: torch.Size([2, 3])
New shape: torch.Size([2, 1, 3])
tensor([
[[1, 2, 3]],
[[4, 5, 6]]
])
Пример
Давайте используем отрицательную позицию для вставки измерения:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print("Original shape:", t.shape)
res = t.unsqueeze(-1)
print("New shape:", res.shape)
print(res)
Результат выполнения кода:
Original shape: torch.Size([5])
New shape: torch.Size([5, 1])
tensor([[1],
[2],
[3],
[4],
[5]])
Смотрите также
-
метод
squeeze,
который удаляет измерения размерности1 -
метод
view,
который изменяет форму тензора -
метод
reshape,
который также изменяет форму тензора -
метод
unsqueeze_,
который добавляет измерение на месте