Fonction torch.tensor de PyTorch


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

torch.tensorC'est la fonction principale de PyTorch pour créer des tenseurs. Elle crée un nouveau tenseur en copiant les données et ne préserve pas l'historique de gradient automatique des données d'origine.

C'est l'une des méthodes les plus couramment utilisées pour créer des tenseurs PyTorch et elle convient à la plupart des scénarios.

Définition de fonction

torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)

Parameters:

  • data(tout type) : Les données du tenseur, qui peuvent être une liste Python, un tuple, un tableau NumPy, etc.
  • dtype(torch.dtype, facultatif) : Spécifie le type de données du tenseur, tel quetorch.float32、torch.int64etc.
  • device(torch.device, facultatif) : Spécifie le périphérique sur lequel le tenseur est stocké, tel quetorch.device('cpu')outorch.device('cuda')。
  • requires_grad(bool, facultatif) : Indique si un gradient doit être calculé ; la valeur par défaut estFalse。
  • pin_memory(bool, facultatif) : Indique s'il faut utiliser la mémoire épinglée ; la valeur par défaut estFalse。

Valeur de retour:

  • torch.TensorRenvoie un tenseur PyTorch.

Exemples d'utilisation

Voici quelques exemples d'utilisation detorch.tensorfonction.

Exemple 1 : Création d'un tenseur à partir d'une liste

Exemple

import torch

# Créer un tenseur 1D à partir d'une liste Python
data = [1, 2, 3, 4, 5]
x = torch.tensor(data)

print(x)
print(x.dtype)

La sortie est :

tensor([1, 2, 3, 4, 5])
torch.int64

Dans cet exemple, nous avons créé un tenseur 1D à partir d'une liste Python. PyTorch déduit automatiquement le type de données commeint64。

Exemple 2 : Spécification du type de données

Exemple

import torch

# Créer un tenseur de type float32
x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)

print(x)
print(x.dtype)

La sortie est :

tensor([1., 2., 3.])
torch.float32

Dans cet exemple, nous avons explicitement spécifié le type de données du tenseur commefloat32。

Exemple 3 : Création d'un tenseur qui nécessite des gradients

Exemple

import torch

# Créer un tenseur qui nécessite le calcul du gradient
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)

print(x.requires_grad)

La sortie est :

True

Dans cet exemple, nous avons créé un tenseur qui nécessite le calcul de gradient, ce qui est très utile lors de l'entraînement de réseaux de neurones.

Exemple 4 : Création d'un tenseur à partir d'une liste 2D

Exemple

import torch

# Créer un tenseur 2D (matrice) à partir d'une liste 2D
data = [[1, 2, 3], [4, 5, 6]]
x = torch.tensor(data)

print(x)
print(x.shape)

La sortie est :

tensor([[1, 2, 3],
        [4, 5, 6]])
torch.Size([2, 3])

Dans cet exemple, nous avons créé un tenseur 2D de 2x3 à partir d'une liste 2D.

Exemple 5 : Création d'un tenseur sur un périphérique CUDA

Exemple

import torch

# Vérifier si CUDA est disponible
if torch.cuda.is_available():
    # Créer un tenseur sur un périphérique CUDA
    x = torch.tensor([1, 2, 3], device='cuda')
    print(x.device)
else:
    print("CUDA n'est pas disponible")

La sortie est :

cuda:0

Dans cet exemple, nous vérifions si CUDA est disponible, puis créons un tenseur sur le GPU.


Différence entre torch.tensor et torch.as_tensor

torch.tensorettorch.as_tensorLes deux sont utilisés pour créer des tenseurs, mais ils présentent des différences importantes :

  • torch.tensorCopie toujours les données ; le tenseur créé ne partage pas la mémoire avec les données d'origine.
  • torch.as_tensorPartage les données autant que possible, ne copie pas la mémoire, et ne copie que lorsque c'est nécessaire.

Si vous avez besoin de préserver l'historique autograd ou d'éviter une copie inutile des données, vous pouvez utilisertorch.as_tensor。


Notes

  • torch.tensorIl copie les données, donc les modifications apportées au tenseur renvoyé n'affecteront pas les données d'origine.
  • Si vous avez besoin de créer un nouveau tenseur avec la même forme et le même périphérique qu'un autre tenseur, vous pouvez utilisertorch.zeros_like()outorch.ones_like()。
  • Lors de la création d'un tenseur, si vous ne spécifiez pasdtype, PyTorch déduira automatiquement le type de données.

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

Autres extensions