Метод view
Метод view изменяет форму тензора, возвращая новый тензор с теми же данными, но другой размерностью. Этот метод работает без копирования данных, поэтому он эффективен по памяти и времени. Первым параметром метод принимает новую форму в виде целых чисел или кортежа. Вторым параметром можно передать число элементов для одной из размерностей.
Синтаксис
tensor.view(*shape)
Пример
Давайте создадим одномерный тензор и изменим его форму на двумерный:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6])
res = t.view(2, 3)
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
])
Пример
Давайте создадим двумерный тензор и изменим его форму на одномерный:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
res = t.view(6)
print(res)
Результат выполнения кода:
tensor([1, 2, 3, 4, 5, 6])
Пример
Давайте используем -1 для автоматического вычисления одной из размерностей:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6])
res = t.view(2, -1)
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
])
Пример
Давайте изменим форму на трёхмерный тензор:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8])
res = t.view(2, 2, 2)
print(res)
Результат выполнения кода:
tensor([
[
[1, 2],
[3, 4],
],
[
[5, 6],
[7, 8],
],
])
Пример
Давайте создадим тензор и проверим, что данные не копируются:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6])
res = t.view(2, 3)
res[0, 0] = 10
print(t)
print(res)
Результат выполнения кода:
tensor([10, 2, 3, 4, 5, 6])
tensor([
[10, 2, 3],
[ 4, 5, 6],
])