Метод view_as
Метод view_as класса Tensor изменяет форму тензора,
делая её такой же, как у переданного в качестве аргумента тензора.
Этот метод является удобной альтернативой методу view,
когда нужно привести тензор к форме другого тензора.
Важно, что метод view_as не копирует данные,
а только изменяет представление тензора в памяти.
Поэтому общий размер данных (количество элементов) должен совпадать
с размером тензора, на который ссылаются.
Синтаксис
tensor.view_as(other)
Пример
Давайте изменим форму тензора, сделав её такой же, как у другого тензора:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6])
other = torch.tensor([[1, 2, 3], [4, 5, 6]])
res = t.view_as(other)
print(res)
Результат выполнения кода:
tensor([
[1, 2, 3],
[4, 5, 6],
])
Пример
Метод view_as позволяет изменять форму тензора
без копирования данных, что подтверждается проверкой
одинакового адреса в памяти:
import torch
t = torch.tensor([1, 2, 3, 4, 5, 6])
other = torch.tensor([[1, 2, 3], [4, 5, 6]])
res = t.view_as(other)
print(res.data_ptr() == t.data_ptr())
Результат выполнения кода:
True
Пример
Если общий размер данных не совпадает, метод view_as
выбросит ошибку:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
other = torch.tensor([[1, 2], [3, 4], [5, 6]])
try:
res = t.view_as(other)
print(res)
except Exception as e:
print("Error:", str(e))
Результат выполнения кода:
"Error: shape '[3, 2]' is invalid for input of size 5"
Смотрите также
-
метод
view,
который изменяет форму тензора по заданным размерам -
метод
reshape,
который изменяет форму тензора с возможным копированием данных -
метод
reshape_as,
который изменяет форму тензора, делая её как у другого тензора, с возможным копированием -
метод
flatten,
который преобразует многомерный тензор в одномерный