[PYTHON] [PyTorch Tutorial ①] Was ist PyTorch?

Einführung

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) ”.

Inhaltsverzeichnis

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.

2. Verwenden Sie Google Colaboratory mit Ihrem Google-Konto

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".

20200222_01.png

Anschließend wird der folgende Bildschirm "Willkommen im Labor" angezeigt. Klicken Sie auf Auf Laufwerk kopieren.

20200222_02.png

Wenn Sie zu Google Drive wechseln, wird der Ordner "Colab Notebooks" wie unten gezeigt erstellt.

20200222_03.png

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.

20200222_04.png

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.

20200222_05.png

3.What is PyTorch?

3.1. Tensor erstellen

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])

3.2 Betrieb des Tensors

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.

20200223_01.png

4. Schließlich

Das ist der Inhalt von PyTorchs erstem Tutorial "Was ist PyTorch?". Nächstes Mal wird mit dem zweiten Tutorial "AUTOGRAD: AUTOMATIC DIFFERENTIATION" fortfahren.

Geschichte

2020/02/23 Erste Ausgabe veröffentlicht 28.02.2020 Hinzufügung des nächsten Links

Recommended Posts

[PyTorch Tutorial ①] Was ist PyTorch?
[PyTorch Tutorial ⑥] Was ist torch.nn wirklich?
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist Linux?
Was ist klass?
Was ist SALOME?
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist eine Distribution?
Was ist Piotroskis F-Score?
Was ist Raspberry Pi?
[Python] Was ist Pipeline ...
Was ist das Calmar-Verhältnis?
Was ist Hyperparameter-Tuning?
Was ist ein Hacker?
Was ist JSON? .. [Hinweis]
PyTorch DataLoader ist langsam
Wofür ist Linux?
Was ist ein Zeiger?
Was ist Ensemble-Lernen?
Was ist TCP / IP?
[PyTorch Tutorial ③] NEURALE NETZWERKE
Was ist Pythons __init__.py?
Was ist ein Iterator?
Was ist UNIT-V Linux?
[Python] Was ist virtualenv?
Was ist maschinelles Lernen?
Was ist Mini Sam oder Mini Max?
Was ist eine logistische Regressionsanalyse?
[PyTorch Tutorial ④] AUSBILDUNG EINES KLASSIFIERERS
[PyTorch] Tutorial (japanische Version) ② ~ AUTOGRAD ~
Was ist eine Instanzvariable?
Was ist ein Entscheidungsbaum?
Was ist ein Kontextwechsel?
Was ist Google Cloud Dataflow?
[DL] Was ist Gewichtsverlust?
[Python] Python und Sicherheit - is Was ist Python?
Was ist ein Superuser?
Wettbewerbsprogrammierung ist was (Bonus)
[Python] * args ** Was ist kwrgs?
Was ist ein Systemaufruf?
[PyTorch] Tutorial (japanische Version) ① ~ Tensol ~
[Definition] Was ist ein Framework?
[PyTorch Tutorial ②] Autograd: Automatische Differenzierung
Tutorial zum neuronalen Netz von Pytorch (CNN) 1.3.1.
Was ist die Schnittstelle für ...
Was ist Project Euler 3-Beschleunigung?
Was ist eine Rückruffunktion?
Was ist die Rückruffunktion?