Метод transpose_
Метод transpose_ класса Tensor
меняет местами две оси тензора непосредственно
в самом объекте, то есть выполняет преобразование
на месте. В отличие от метода transpose,
который возвращает новый тензор, этот метод
изменяет исходный тензор и возвращает ссылку
на него же. Первым параметром метод принимает
индекс первой оси для перестановки, вторым
параметром - индекс второй оси.
Синтаксис
tensor.transpose_(dim0, dim1)
Пример
Давайте создадим двумерный тензор и применим
к нему метод transpose_, чтобы поменять
местами строки и столбцы:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
t.transpose_(0, 1)
print(t)
Результат выполнения кода:
tensor([
[1, 4],
[2, 5],
[3, 6],
])
Пример
Давайте продемонстрируем, что метод работает на месте, то есть изменяет исходный тензор, а не создает копию:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
res = t.transpose_(0, 1)
print(res is t)
print(t)
Результат выполнения кода:
True
tensor([
[1, 4],
[2, 5],
[3, 6],
])
Пример
Применим метод к трехмерному тензору, поменяв местами оси 0 и 2:
import torch
t = torch.tensor([
[
[1, 2],
[3, 4],
],
[
[5, 6],
[7, 8],
],
])
t.transpose_(0, 2)
print(t)
Результат выполнения кода:
tensor([
[
[1, 5],
[3, 7],
],
[
[2, 6],
[4, 8],
],
])