Функция torch.moveaxis в PyTorch
Справочное руководство Pytorch torch
torch.moveaxisэто функция в PyTorch, используемая для перемещения осей тензора. Она перемещает указанные оси на новые позиции и возвращает новое представление тензора.
Эта функция такая же, какtorch.movedimОн имеет ту же функциональность, за исключением того, что имена параметров различаются (moveaxis использует "axis", а movedim использует "dim").
Определение функции
torch.moveaxis(input, source, destination)
Parameters:
input(Tensor): Входной тензор.source(int или tuple of int): Исходные индексы осей для перемещения. Может быть целым числом или кортежем индексов осей.destination(int или tuple of int): Индексы целевых позиций. Может быть целым числом или кортежем индексов осей, и его длина должна совпадать с source.
Возвращаемое значение:
torch.Tensor: Возвращает представление тензора после перемещения осей.
Примеры использования
Пример
import torch
# Создать тензор с формой (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Переместить последнее измерение в первую позицию
y = torch.moveaxis(x, -1, 0)
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
# Создать тензор с формой (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Переместить последнее измерение в первую позицию
y = torch.moveaxis(x, -1, 0)
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
Результат вывода:
原始形状: torch.Size([32, 10, 128]) 移动后形状: torch.Size([128, 10, 32])
Пример
import torch
# Создать четырёхмерный тензор (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Переместить измерение time в конец
y = torch.moveaxis(x, 0, -1)
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
# Создать четырёхмерный тензор (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Переместить измерение time в конец
y = torch.moveaxis(x, 0, -1)
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
Результат вывода:
原始形状: torch.Size([10, 3, 32, 32]) 移动后形状: torch.Size([3, 32, 32, 10])
Пример
import torch
# Переместить несколько осей одновременно
x = torch.randn(2, 3, 4, 5)
# Переместить оси 0 и 1 в позиции 2 и 3 одновременно
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
# Переместить несколько осей одновременно
x = torch.randn(2, 3, 4, 5)
# Переместить оси 0 и 1 в позиции 2 и 3 одновременно
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Исходная форма:", x.shape)
print("Форма после перемещения:", y.shape)
Результат вывода:
原始形状: torch.Size([2, 3, 4, 5]) 移动后形状: torch.Size([4, 5, 2, 3])
Примечание:torch.moveaxisВозвращает представление, а не копию, поэтому операция эффективна. Эта функция часто используется для настройки форм данных под различные фреймворки или API глубокого обучения.
Другие расширения