Функция torch.narrow_copy в PyTorch


Pytorch torch 参考手册Справочное руководство PyTorch torch

torch.narrow_copyЭто функция в PyTorch, используемая для возврата копии среза тензора. Она возвращает копию среза от начальной позиции до указанной длины по указанному измерению.

Эта функция являетсяtorch.narrowфункционально аналогична, ноtorch.narrowвозвращает представление, тогда какtorch.narrow_copyвозвращает копию.

Определение функции

torch.narrow_copy(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_copy(x, dim=0, start=0, length=2)

print("Исходный тензор:")
print(x)
print("nКопия среза:")
print(y)

# Изменение копии не влияет на исходный тензор
y[0, 0] = 100
print("nПосле изменения копии, исходный тензор:", x[0, 0])
print("После изменения копии, копия среза:", y[0, 0])

Результат вывода:

原始张量:
tensor([[ 1,  2,  3,  4],
        [ 5,  6,  7,  8],
        [ 9, 10, 11, 12]])

切片副本:
tensor([[1, 2, 3, 4],
        [5, 6, 7, 8]])

修改副本后,原始张量: tensor(1)
修改副本后,切片副本: tensor(100)

Пример

import torch

# Создать 3D-тензор
x = torch.randn(5, 6, 7)

# Во втором измерении взять 4 элемента, начиная с индекса 2
y = torch.narrow_copy(x, dim=1, start=2, length=4)

print("Исходная форма:", x.shape)
print("Форма копии среза:", y.shape)

Результат вывода:

原始形状: torch.Size([5, 6, 7])
切片副本形状: torch.Size([5, 4, 7])

Примечание:torch.narrow_copyОна возвращает копию, а не представление. Это означает, что изменение возвращённого тензора не влияет на исходный тензор, но потребляет дополнительную память. Если независимая копия не нужна, можно использоватьtorch.narrowчтобы сэкономить память.


Pytorch torch 参考手册Справочное руководство PyTorch torch

Другие расширения