Fonction torch.narrow_copy de PyTorch


Pytorch torch 参考手册Manuel de référence PyTorch torch

torch.narrow_copyIl s'agit d'une fonction dans PyTorch utilisée pour renvoyer une copie d'une tranche de tenseur. Elle renvoie une copie de la tranche depuis la position de départ jusqu'à la longueur spécifiée sur la dimension spécifiée.

Cette fonction esttorch.narrowfonctionnellement similaire à, maistorch.narrowrenvoie une vue, tandis quetorch.narrow_copyrenvoie une copie.

Définition de fonction

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

Parameters:

  • input(Tensor) : tenseur d'entrée.
  • dim(int): La dimension à découper.
  • start(int) : indice de départ.
  • length(int): La longueur de la tranche.

Valeur de retour:

  • torch.Tensor: Renvoie la copie du tenseur après le découpage spécifié.

Exemple d'utilisation

Exemple

import torch

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

# Dans la première dimension (lignes), prendre 2 lignes à partir de l'indice 0
y = torch.narrow_copy(x, dim=0, start=0, length=2)

print("Tenseur d'origine :")
print(x)
print("nCopie découpée :")
print(y)

# La modification de la copie n'affecte pas le tenseur d'origine
y[0, 0] = 100
print("nAprès modification de la copie, tenseur d'origine :", x[0, 0])
print("Après modification de la copie, copie découpée :", y[0, 0])

Le résultat de sortie est:

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

Exemple

import torch

# Créer un tenseur 3D
x = torch.randn(5, 6, 7)

# Sur la deuxième dimension, prendre 4 éléments à partir de l'indice 2
y = torch.narrow_copy(x, dim=1, start=2, length=4)

print("Forme d'origine :", x.shape)
print("Forme de la copie découpée :", y.shape)

Le résultat de sortie est:

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

Remarque :torch.narrow_copyIl renvoie une copie, pas une vue. Cela signifie que modifier le tenseur renvoyé n'affecte pas le tenseur d'origine, mais cela consomme de la mémoire supplémentaire. Si une copie indépendante n'est pas nécessaire, vous pouvez utilisertorch.narrowpour économiser de la mémoire.


Pytorch torch 参考手册Manuel de référence PyTorch torch

Autres extensions