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