Preferred Networks, das Chainer entwickelt hat, wird in Zukunft auf PyTorch basieren Article Wurde gesehen. Es scheint, dass viele wissenschaftliche Arbeiten auch von PyTorch verfasst wurden. PyTorch ist eine Deep-Learning-Bibliothek, die von Facebook entwickelt und veröffentlicht wurde. Wird PyTorch in Zukunft wahrscheinlich zum Standard? Daher möchte ich PyTorch mit den offiziellen Tutorials (https://pytorch.org/tutorials/) starten.
"[WAS IST PYTORCH?]" (Https: // pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py) ”.
1.Google Colaboratory 2. Verwenden Sie Google Colaboratory mit Ihrem Google-Konto 3.What is PyTorch? 3.1. Tensor erstellen 3.2 Betrieb des Tensors 3.3.Tensor ⇔ Numpy 3.4.CUDA Tensor 4. Schließlich Geschichte
1.Google Colaboratory
Ich denke, dass das PyTorch-Tutorial mithilfe der Umgebung von Google Colaboratory problemlos erweitert werden kann. Google Colaboratory ist eine von Google bereitgestellte Umgebung, in der Sie Python in Ihrem Browser ausführen können. Sie benötigen ein Google-Konto. Wenn Sie jedoch mit Google Drive arbeiten, können Sie Dateien auf dem Laufwerk in einer Laborumgebung ausführen und Dateien auf dem Laufwerk lesen und exportieren.
Bereiten wir eine Umgebung für die Verwendung von Colaboratory vor. Wenn Sie sich mit Ihrem Google-Konto anmelden und zu Colaboratory (https://colab.research.google.com/) wechseln, wird ein Popup wie das folgende angezeigt. .. Hier einmal "abbrechen".
Anschließend wird der folgende Bildschirm "Willkommen im Labor" angezeigt. Klicken Sie auf Auf Laufwerk kopieren.
Wenn Sie zu Google Drive wechseln, wird der Ordner "Colab Notebooks" wie unten gezeigt erstellt.
Jetzt können Sie Google Colaboratory verwenden.
Gehen Sie zu PyTorchs Tutorials (https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html) (https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html). Klicken Sie in Google Colab auf Ausführen. Sie können fortfahren, aber auf Auf Laufwerk kopieren klicken.
Anschließend wird die Datei in den Ordner "Colab Notebooks" des zuvor erstellten Google-Laufwerks kopiert. Danach können Sie die Datei in der Colaboratory-Umgebung ausführen, indem Sie mit der rechten Maustaste auf die Datei klicken. ⇒ "Öffnen mit" ⇒ "Google Colaboratory". Wenn Sie das Lernprogramm in Google Drive kopieren und fortfahren, können Sie fortfahren und Ihre eigene Beschreibung hinzufügen.
3.What is PyTorch?
Die Einführung wurde verlängert, aber wir werden mit dem PyTorch-Tutorial fortfahren. Diesmal ist es von Anfang an "Was ist Py Torch?".
PyTorch verarbeitet Eingabedaten mit Tensor. Tensor ist ein Array beliebiger Dimensionen. Eine einzelne Zahl oder ein Skalar ist ein Tensor 0. Ordnung, ein 1D-Array oder Vektor ist ein Tensor 1. Ordnung, ein 2D-Array oder eine Matrix ist ein Tensor 2. Ordnung und ein 3D-Array ist ein Tensor 3. Ordnung. Erstellen Sie mit torch.empty einen nicht initialisierten Tensor.
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]])
Erstellen Sie einen zufälligen Tensor in 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]])
Erstellen Sie einen Tensor mit null Elementen in 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]])
Sie können einen Tensor erstellen, indem Sie eine Liste an torch.tensor übergeben.
x = torch.tensor([5.5, 3])
print(x)
tensor([5.5000, 3.0000])
Schreiben Sie den ursprünglichen Tensor mit Element 1 mit new_ones neu. Außerdem schreibt randn_like den ursprünglichen Tensor mit einem zufälligen Wert neu. Da es sich um Randn handelt, handelt es sich um einen Zufallswert für die Standardisierung (Mittelwert 0, Standardabweichung 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]])
Holen Sie sich die Größe von Tensor mit size ().
print(x.size())
torch.Size([5, 3])
Die Addition erfolgt Element für Element. Es gibt zwei Beschreibungen, den Operator + und 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]])
Sie können den Ausgabe-Tensor mit dem Argument out angeben.
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]])
Schreiben Sie den Eingabe-Tensor mit dem Berechnungsergebnis mit add_ neu.
# 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]])
NumPy-Scheiben können ebenfalls verwendet werden.
print(x[:, 1])
tensor([ 0.0026, 0.0672, -0.1866, -0.9790, 0.4730])
torch.view transformiert die Form von Tensor. Wenn -1 angegeben ist, wird es unter Berücksichtigung anderer Dimensionen ergänzt.
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])
Sie können es als normalen Wert erhalten, indem Sie item () für Tensor mit 1 Element verwenden.
x = torch.randn(1)
print(x)
print(x.item())
tensor([-1.5867])
-1.5867252349853516
3.3.Tensor ⇔ Numpy
Die Konvertierung von NumPy nach Tensor erfolgt mit torch.numpy (). Da es den Speicher gemeinsam nutzt, ändert das Ändern des einen auch das andere.
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.]
Die Konvertierung von Tensor nach NumPy erfolgt mit 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
Mit torch.to () können Sie Tensor auf verschiedene Geräte verschieben. Der folgende Code navigiert zum CUDA-Gerät. CUDA ist eine von NVIDIA bereitgestellte GPU-Umgebungsplattform.
# 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)
Damit der obige Code in Colaboratory ausgeführt werden kann, müssen Sie "Hardware Accelerator" im Menü "Runtime ändern" auf "GPU" setzen.
Das ist der Inhalt von PyTorchs erstem Tutorial "Was ist PyTorch?". Nächstes Mal wird mit dem zweiten Tutorial "AUTOGRAD: AUTOMATIC DIFFERENTIATION" fortfahren.
2020/02/23 Erste Ausgabe veröffentlicht 28.02.2020 Hinzufügung des nächsten Links
Recommended Posts