Preferred Networks, qui a développé Chainer, sera basé sur PyTorch à l'avenir Article A été vu. Il semble que de nombreux articles universitaires soient également rédigés par PyTorch. PyTorch est une bibliothèque d'apprentissage en profondeur développée et publiée par Facebook. PyTorch est-il susceptible de devenir la norme à l'avenir? J'aimerais donc démarrer PyTorch avec les tutoriels officiels (https://pytorch.org/tutorials/).
"[QU'EST-CE QUE PYTORCH?](Https: //)" dans le premier tutoriel "APPRENTISSAGE PROFOND AVEC PYTORCH: UN BLITZ DE 60 MINUTES" dans la mise en route pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py) ».
1.Google Colaboratory 2. Utilisez Google Colaboratory avec votre compte Google 3.What is PyTorch? 3.1. Création de Tensor 3.2. Fonctionnement du Tensor 3.3.Tensor ⇔ Numpy 3.4.CUDA Tensor 4. Enfin Histoire
1.Google Colaboratory
Je pense que le tutoriel PyTorch peut être facilement avancé en utilisant l'environnement de Google Colaboratory. Google Colaboratory est un environnement fourni par Google qui vous permet d'exécuter Python dans votre navigateur. Vous avez besoin d'un compte Google, mais en travaillant avec Google Drive, vous pouvez exécuter des fichiers sur le lecteur dans un environnement Colaboratory, et lire et exporter des fichiers sur le lecteur.
Préparons un environnement pour utiliser Colaboratory. Lorsque vous vous connectez avec votre compte Google et que vous accédez à Colaboratory (https://colab.research.google.com/), vous verrez une fenêtre contextuelle semblable à celle ci-dessous. .. Ici, "Annuler" une fois.
Ensuite, l'écran suivant «Bienvenue dans Colaboratory» s'affiche. Cliquez sur Copier sur le lecteur.
Si vous accédez à Google Drive, le dossier "Colab Notebooks" sera créé comme indiqué ci-dessous.
Vous êtes maintenant prêt à utiliser Google Colaboratory.
Accédez aux tutoriels de PyTorch (https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html) (https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html). Cliquez sur Exécuter dans Google Colab. Vous pouvez procéder tel quel, mais cliquez sur Copier sur le lecteur.
Cela copiera le fichier dans le dossier «Colab Notebooks» sur le Google Drive que vous venez de créer. Ensuite, vous pouvez exécuter le fichier dans l'environnement Colaboratory en cliquant avec le bouton droit sur le fichier ⇒ «Ouvrir avec» ⇒ «Google Colaboratory». En copiant le tutoriel sur Google Drive et en continuant, vous pouvez continuer tout en ajoutant votre propre description.
3.What is PyTorch?
L'introduction a été allongée, mais nous allons continuer avec le tutoriel PyTorch. Cette fois, c'est dès le premier "Qu'est-ce que Py Torch?".
PyTorch gère les données d'entrée avec Tensor. Tensor est un tableau de dimensions arbitraires. Un seul nombre ou scalaire est un tenseur d'ordre 0, un tableau ou vecteur 1D est un tenseur du 1er ordre, un tableau ou une matrice 2D est un tenseur du 2e ordre et un tableau 3D est un tenseur du 3e ordre. Créez un Tensor non initialisé avec torch.empty.
from __future__ import print_function
import torch
x = torch.empty(5, 3)
print(x)
tensor([[2.8129e-35, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 2.8026e-45],
[0.0000e+00, 1.1210e-44, 0.0000e+00],
[1.4013e-45, 0.0000e+00, 0.0000e+00]])
Créez un Tensor à valeur aléatoire dans torch.rand.
x = torch.rand(5, 3)
print(x)
tensor([[0.0129, 0.2380, 0.2860],
[0.0942, 0.6319, 0.9040],
[0.3457, 0.0503, 0.9295],
[0.2715, 0.8802, 0.6511],
[0.3274, 0.0322, 0.0097]])
Créez un Tensor avec zéro élément dans torch.zeros.
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
Vous pouvez créer un Tensor en passant une liste à torch.tensor.
x = torch.tensor([5.5, 3])
print(x)
tensor([5.5000, 3.0000])
Réécrivez le Tensor d'origine avec l'élément 1 avec new_ones. De plus, randn_like réécrit le Tensor original avec une valeur aléatoire. Puisqu'il s'agit de randn, ce sera une valeur aléatoire pour la normalisation (moyenne 0, écart type 1).
x = x.new_ones(5, 3, dtype=torch.double) # new_* methods take in sizes
print(x)
x = torch.randn_like(x, dtype=torch.float) # override dtype!
print(x)
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
tensor([[-1.7169, 0.0026, 0.0341],
[-0.8156, 0.0672, 0.6364],
[-0.3116, -0.1866, -1.3844],
[-0.2527, -0.9790, -1.6029],
[-0.9892, 0.4730, 0.4554]])
Obtenez la taille de Tensor avec size ().
print(x.size())
torch.Size([5, 3])
L'ajout se fait élément par élément. Il existe deux descriptions, l'opérateur + et torch.add.
y = torch.rand(5, 3)
print(x + y)
tensor([[-1.1761, 0.5185, 0.9026],
[-0.6358, 0.8661, 0.9583],
[ 0.4605, -0.0935, -0.7063],
[ 0.7133, -0.8798, -1.0570],
[-0.3332, 1.0319, 0.5329]])
print(torch.add(x, y))
tensor([[-1.1761, 0.5185, 0.9026],
[-0.6358, 0.8661, 0.9583],
[ 0.4605, -0.0935, -0.7063],
[ 0.7133, -0.8798, -1.0570],
[-0.3332, 1.0319, 0.5329]])
Vous pouvez spécifier le Tensor de sortie avec l'argument out.
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
tensor([[-1.1761, 0.5185, 0.9026],
[-0.6358, 0.8661, 0.9583],
[ 0.4605, -0.0935, -0.7063],
[ 0.7133, -0.8798, -1.0570],
[-0.3332, 1.0319, 0.5329]])
Réécrivez le Tensor d'entrée avec le résultat du calcul avec add_.
# adds x to y
y.add_(x)
print(y)
tensor([[-1.1761, 0.5185, 0.9026],
[-0.6358, 0.8661, 0.9583],
[ 0.4605, -0.0935, -0.7063],
[ 0.7133, -0.8798, -1.0570],
[-0.3332, 1.0319, 0.5329]])
Les tranches NumPy peuvent également être utilisées.
print(x[:, 1])
tensor([ 0.0026, 0.0672, -0.1866, -0.9790, 0.4730])
torch.view transforme la forme de Tensor. Si vous spécifiez -1, il sera complété en considérant d'autres dimensions.
x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8) # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())
torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
Vous pouvez l'obtenir comme valeur normale en utilisant item () pour Tensor avec 1 élément.
x = torch.randn(1)
print(x)
print(x.item())
tensor([-1.5867])
-1.5867252349853516
3.3.Tensor ⇔ Numpy
La conversion de NumPy en Tensor se fait avec torch.numpy (). Parce qu'il partage la mémoire, changer l'un changera également l'autre.
a = torch.ones(5)
print(a)
tensor([1., 1., 1., 1., 1.])
b = a.numpy()
print(b)
[1. 1. 1. 1. 1.]
a.add_(1)
print(a)
print(b)
tensor([2., 2., 2., 2., 2.])
[2. 2. 2. 2. 2.]
La conversion de Tensor en NumPy se fait avec torch.from_numpy ().
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
[2. 2. 2. 2. 2.]
tensor([2., 2., 2., 2., 2.], dtype=torch.float64)
3.4.CUDA Tensor
Vous pouvez utiliser torch.to () pour déplacer Tensor vers différents appareils. Le code ci-dessous permet d'accéder au périphérique CUDA. CUDA est une plate-forme d'environnement GPU fournie par NVIDIA.
# let us run this cell only if CUDA is available
# We will use ``torch.device`` objects to move tensors in and out of GPU
if torch.cuda.is_available():
device = torch.device("cuda") # a CUDA device object
y = torch.ones_like(x, device=device) # directly create a tensor on GPU
x = x.to(device) # or just use strings ``.to("cuda")``
z = x + y
print(z)
print(z.to("cpu", torch.double)) # ``.to`` can also change dtype together!
tensor([0.9866], device='cuda:0')
tensor([0.9866], dtype=torch.float64)
Pour que le code ci-dessus s'exécute dans Colaboratory, vous devez définir «Accélérateur matériel» sur «GPU» dans le menu «Modifier le temps d'exécution».
C'est le contenu du premier tutoriel de PyTorch, "Qu'est-ce que PyTorch?". La prochaine fois aimerait continuer avec le deuxième tutoriel "AUTOGRAD: DIFFERENTIATION AUTOMATIQUE".
2020/02/23 Première édition publiée 2020/02/28 Ajout du lien suivant
Recommended Posts