Удаление лишних осей в PyTorch
В форме тензора иногда встречаются
оси длины 1. Они не добавляют
новых чисел, но удлиняют описание
формы. Метод squeeze убирает
такие оси.
Рассмотрим тензор, у которого снаружи одна лишняя ось, а внутри три значения в столбец. Создадим его и выведем форму до и после полного сжатия:
import torch
wrapped = torch.tensor([[[1], [2], [3]]])
print(wrapped.shape) # выведет torch.Size([1, 3, 1])
plain = wrapped.squeeze()
print(plain.shape) # выведет torch.Size([3])
Можно указать, какую именно ось длины один убрать. Если снять только внешнюю оболочку, внутренний столбец сохранится:
import torch
wrapped = torch.tensor([[[1], [2], [3]]])
part = wrapped.squeeze(0)
print(part.shape) # выведет torch.Size([3, 1])
Соберите тензор формы
(1, 4, 1) из последовательных
целых чисел и выведите форму
после удаления всех осей
длины один.
Соберите тензор формы
(1, 2, 1) с любыми
значениями и выведите форму
после снятия только первой
оси длины один.
Соберите тензор формы
(1, 3) из трёх
последовательных целых чисел
и выведите форму после
удаления всех осей длины один.