Función torch.narrow_copy de PyTorch


Pytorch torch 参考手册Manual de referencia de Pytorch torch

torch.narrow_copyEs una función de PyTorch que se utiliza para devolver una copia de un segmento de un tensor. Devuelve una copia del segmento, desde la posición inicial hasta la longitud especificada, en la dimensión especificada.

Esta función es similar atorch.narrowen cuanto a funcionalidad, perotorch.narrowdevuelve una vista, mientras quetorch.narrow_copydevuelve una copia.

Definición de la función

torch.narrow_copy(input, dim, start, length)

Parámetros:

  • input(Tensor): el tensor de entrada.
  • dim(int): la dimensión a cortar.
  • start(int): el índice inicial.
  • length(int): la longitud del segmento.

Valor de retorno:

  • torch.Tensor: Devuelve una copia del tensor después del segmento especificado.

Ejemplo de uso

Ejemplo

import torch

# Crear un tensor
x = torch.tensor([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12]])

# En la primera dimensión (filas), tomar 2 filas desde el índice 0
y = torch.narrow_copy(x, dim=0, start=0, length=2)

print("Tensor original:")
print(x)
print("nCopia del segmento:")
print(y)

# Modificar la copia no afecta al tensor original
y[0, 0] = 100
print("nDespués de modificar la copia, tensor original:", x[0, 0])
print("Después de modificar la copia, copia del segmento:", y[0, 0])

El resultado de salida es:

原始张量:
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)

Ejemplo

import torch

# Crear un tensor 3D
x = torch.randn(5, 6, 7)

# En la segunda dimensión, tomar 4 elementos desde el índice 2
y = torch.narrow_copy(x, dim=1, start=2, length=4)

print("Forma original:", x.shape)
print("Forma de la copia del segmento:", y.shape)

El resultado de salida es:

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

Nota:torch.narrow_copyDevuelve una copia, no una vista. Esto significa que modificar el tensor devuelto no afecta al tensor original, pero ocupa memoria adicional. Si no se necesita una copia independiente, se puede usartorch.narrowpara ahorrar memoria.


Pytorch torch 参考手册Manual de referencia de Pytorch torch

Otras extensiones