web-dev-qa-db-fra.com

Quelle est la différence entre torch.Tensor () et torch.empty () dans Pytorch?

Je l'ai essayé comme ci-dessous. Il me semble que ce sont les mêmes. Quelle est la différence entre torch.Tensor () et torch.empty () dans pytorch?

enter image description here

8
nkhuyu

torch.Tensor() n'est qu'un alias de torch.FloatTensor() qui est le type de tenseur par défaut, lorsqu'aucun dtype n'est spécifié lors de la construction du tenseur.

D'après la torche pour les utilisateurs numpy , il semble que torch.Tensor() soit un remplacement direct de numpy.empty()

Donc, en substance, torch.FloatTensor() et torch.empty() fait le même travail de retour d'un tenseur rempli de valeurs de type dtype torch.float32. Ci-dessous, un petit parcours:

In [87]: torch.FloatTensor(2, 3)
Out[87]: 
tensor([[-1.0049e+08,  4.5688e-41, -8.9389e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [88]: torch.FloatTensor(2, 3)
Out[88]: 
tensor([[-1.0049e+08,  4.5688e-41, -1.6512e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [89]: torch.empty(2, 3)
Out[89]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.0400e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [90]: torch.empty(2, 3)
Out[90]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.2852e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])
9
kmario23

Réponse rapide: torch.empty () crée un tenseur avec le type de données de votre choix, torch.Tensor () uniquement crée des tenseurs de type torche.FloatTensor. Donc torch.Tensor () est un cas particulier de torch.empty ()

Réponse détaillée:

torch.empty () renvoie un tenseur rempli de données non initialisées. Avec des arguments, vous pouvez spécifier la forme du tenseur, le tenseur de sortie, le type de données ... (voir la documentation tensor.empty ())

Cela signifie que vous pouvez créer un tenseur de flotteurs, int ... Si aucun type de données n'est spécifié, celui choisi est votre torche par défaut .Tensor type ( qui est torch.FloatTensor par défaut et vous pouvez le changer en utilisant torch.set_default_tensor_type () )

torch.Tensor () est simplement un cas spécial de torch.empty () où le type de données est torch.FloatTensor.

1
HLeb