Функция torch.narrow в PyTorch
Справочное руководство Pytorch torch
torch.narrow— это функция в PyTorch, используемая для возврата срезов тензора. Она возвращает срез-представление, начиная с указанной позиции, с указанной длиной вдоль указанного измерения.
Определение функции
torch.narrow(input, dim, start, length)
Parameters:
input(Tensor): Входной тензор.dim(int): Измерение для среза.start(int): Начальный индекс.length(int): Длина среза.
Возвращаемое значение:
torch.Tensor: Возвращает срез-представление тензора.
Примеры использования
Пример
import torch
# Создайте тензор
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Срез 2 строк, начиная с индекса 0, вдоль первого измерения (строки)
y = torch.narrow(x, dim=0, start=0, length=2)
print("Исходный тензор:")
print(x)
print("nSliced result:")
print(y)
# Создайте тензор
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Срез 2 строк, начиная с индекса 0, вдоль первого измерения (строки)
y = torch.narrow(x, dim=0, start=0, length=2)
print("Исходный тензор:")
print(x)
print("nSliced result:")
print(y)
Вывод:
原始张量:
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
切片结果:
tensor([[1, 2, 3, 4],
[5, 6, 7, 8]])
Пример
import torch
# Создайте тензор
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Срез 2 столбцов, начиная с индекса 1 по второму измерению (столбцы)
y = torch.narrow(x, dim=1, start=1, length=2)
print("Исходный тензор:")
print(x)
print("nSliced result:")
print(y)
# Создайте тензор
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Срез 2 столбцов, начиная с индекса 1 по второму измерению (столбцы)
y = torch.narrow(x, dim=1, start=1, length=2)
print("Исходный тензор:")
print(x)
print("nSliced result:")
print(y)
Вывод:
原始张量:
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
切片结果:
tensor([[ 2, 3],
[ 6, 7],
[10, 11]])
Пример
import torch
# Создать 3D-тензор
x = torch.randn(5, 6, 7)
# Срез 3 элементов, начиная с индекса 2 по первому измерению
y = torch.narrow(x, dim=0, start=2, length=3)
print("Исходная форма:", x.shape)
print("Shape after slicing:", y.shape)
# Создать 3D-тензор
x = torch.randn(5, 6, 7)
# Срез 3 элементов, начиная с индекса 2 по первому измерению
y = torch.narrow(x, dim=0, start=2, length=3)
print("Исходная форма:", x.shape)
print("Shape after slicing:", y.shape)
Вывод:
原始形状: torch.Size([5, 6, 7]) 切片后形状: torch.Size([3, 6, 7])
Примечание:torch.narrowВозвращается представление исходного тензора, а не копия. Если вам нужна копия, вы можете использоватьtorch.narrow_copy。
Другие расширения