Разрезание по заданным длинам в PyTorch
Функция split делит тензор
на несколько частей вдоль выбранной
оси. Длины кусков задают списком;
их сумма должна совпасть с размером
оси. Результат - кортеж тензоров.
Широкую таблицу можно разрезать
на две группы столбцов. Создадим
данные и вызовем split:
import torch
wide = torch.tensor([[1, 2, 3, 4], [5, 6, 7, 8]])
parts = torch.split(wide, [2, 2], dim=1)
print(parts[0])
print(parts[1])
Длины кусков могут быть разными, если их сумма равна длине оси. Разрез вдоль рядов делит таблицу на верхнюю и нижнюю части:
import torch
block = torch.tensor([[1, 2], [3, 4], [5, 6]])
rows = torch.split(block, [1, 2], dim=0)
print(rows[0]) # выведет tensor([[1, 2]])
print(rows[1])
Создайте таблицу [[1, 2, 3, 4, 5]]
и получите левый фрагмент
из двух столбцов и правый
из трёх; выведите сумму
элементов правого фрагмента.
Создайте таблицу из трёх рядов по два числа и отделите верхний ряд от остальных; выведите форму нижнего блока.
Создайте ряд из шести последовательных
целых, начиная с 0, разделите
его на куски длин 1, 2
и 3 и выведите средний кусок.