PyTorch-Tutorial

Zusammenfassung des Pytorch-Tutorials

In diesem PyTorch-Tutorial lernen Sie alle Konzepte von Grund auf. Dieses Tutorial behandelt grundlegende und fortgeschrittene Themen wie die PyTorch-Definition, Vor- und Nachteile von PyTorch, Vergleich, Installation, PyTorch-Framework, Regression und Bildklassifizierung. Dieses PyTorch-Tutorial ist absolut kostenlos.

Was ist PyTorch?

PyTorch ist eine Open-Source-basierte Machine-Learning-Bibliothek fรผr die Verarbeitung natรผrlicher Sprache mit Python. Es รคhnelt NumPy, bietet aber leistungsstarke GPU-Unterstรผtzung. Es bietet dynamische Computergraphen, die Sie mithilfe von Autograd unterwegs รคndern kรถnnen. PyTorch ist auch schneller als einige andere Frameworks. Es wurde 2016 von der AI Research Group von Facebook entwickelt.

Vor- und Nachteile von PyTorch

Im Folgenden sind die Vor- und Nachteile von PyTorch aufgefรผhrt:

Vorteile von PyTorch

  1. Einfache Bibliothek
    PyTorch-Code ist einfach. Es ist leicht zu verstehen und Sie kรถnnen die Bibliothek sofort nutzen. Schauen Sie sich zum Beispiel den folgenden Codeausschnitt an:
class Net(torch.nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

Wie oben erwรคhnt, kรถnnen Sie das Netzwerkmodell einfach definieren und den Code ohne groรŸe Schulung schnell verstehen.

  1. Dynamisches Computerdiagramm

Dynamisches Computerdiagramm

Bildquelle: Erforschung von Deep Learning mit PyTorch

Pytorch bietet Dynamic Computational Graph (DAG). Computational Graphs sind eine Mรถglichkeit, mathematische Ausdrรผcke in Graphmodellen oder Theorien wie Knoten und Kanten auszudrรผcken. Der Knoten fรผhrt die mathematische Operation aus und die Kante ist ein Tensor, der in die Knoten eingespeist wird und die Ausgabe des Knotens im Tensor รผbertrรคgt.

DAG ist ein Graph, der beliebige Formen annehmen kann und Operationen zwischen verschiedenen Eingabegraphen durchfรผhren kann. Bei jeder Iteration wird ein neuer Graph erstellt. Es ist also mรถglich, dieselbe Graphstruktur zu haben oder mit einer anderen Operation einen neuen Graphen zu erstellen. Wir kรถnnen ihn auch als dynamischen Graphen bezeichnen.

  1. Bessere Leistung

Communities und Forscher vergleichen und vergleichen Frameworks, um herauszufinden, welches schneller ist. Ein GitHub-Repo Benchmark fรผr Deep Learning Frameworks und GPUs berichtete, dass PyTorch in Bezug auf die pro Sekunde verarbeiteten Bilder schneller ist als das andere Framework.

Wie Sie unten sehen kรถnnen, sind die Vergleichsdiagramme mit vgg16 und resnet152

Vorteile von PyTorch

Vorteile von PyTorch

  1. Ureinwohner Python

PyTorch basiert eher auf Python. Wenn Sie beispielsweise ein Modell trainieren mรถchten, kรถnnen Sie native Kontrollflรผsse wie Schleifen und Rekursionen verwenden, ohne dass weitere spezielle Variablen oder Sitzungen hinzugefรผgt werden mรผssen, um sie ausfรผhren zu kรถnnen. Dies ist sehr hilfreich fรผr den Trainingsprozess.

Pytorch implementiert auch Imperative Programming und ist definitiv flexibler. So ist es mรถglich, den Tensorwert mitten im Berechnungsprozess auszudrucken.

Nachteil von PyTorch

PyTorch erfordert Anwendungen von Drittanbietern fรผr die Visualisierung. Fรผr die Produktion ist auรŸerdem ein API-Server erforderlich.

Als nรคchstes lernen wir in diesem PyTorch-Tutorial den Unterschied zwischen PyTorch und TensorFlow kennen.

PyTorch vs. Tensorflow

Parameter PyTorch Tensorflow
Modelldefinition Das Modell ist in einer Unterklasse definiert und bietet ein benutzerfreundliches Paket Das Modell ist mit vielen definiert und Sie mรผssen die Syntax verstehen
GPU-Unterstรผtzung Ja Ja
Diagrammtyp Dynamisch Statisch
Zubehรถr Kein Visualisierungstool Sie kรถnnen das Visualisierungstool Tensorboard verwenden
Gemeinschaft Die Community wรคchst weiter GroรŸe aktive Gemeinschaften

PyTorch installieren

Linux

Die Installation unter Linux ist unkompliziert. Sie kรถnnen wรคhlen, ob Sie eine virtuelle Umgebung verwenden oder diese direkt mit Root-Zugriff installieren mรถchten. Geben Sie diesen Befehl im Terminal ein

pip3 install --upgrade torch torchvision

AWS Sagemaker

Sagemaker ist eine der Plattformen in Amazon Internetservice Das bietet eine leistungsstarke Machine-Learning-Engine mit vorinstallierten Deep-Learning-Konfigurationen fรผr Datenwissenschaftler oder Entwickler zum Erstellen, Trainieren und Bereitstellen von Modellen in jedem MaรŸstab.

ร–ffnen Sie zuerst die Amazon Sagemaker Konsole und klicken Sie auf โ€žNotebook-Instanz erstellenโ€œ und geben Sie alle Details fรผr Ihr Notebook ein.

AWS Sagemaker

Klicken Sie im nรคchsten Schritt auf โ€žร–ffnenโ€œ, um Ihre Notebook-Instanz zu starten.

AWS Sagemaker

Endlich, In JupyterKlicken Sie auf โ€žNeuโ€œ und wรคhlen Sie โ€žconda_pytorch_p36โ€œ und Sie kรถnnen Ihre Notebook-Instanz mit installiertem Pytorch verwenden.

Als nรคchstes lernen wir in diesem PyTorch-Tutorial die Grundlagen des PyTorch-Frameworks kennen.

Grundlagen des PyTorch-Frameworks

Lassen Sie uns die grundlegenden Konzepte von PyTorch lernen, bevor wir tiefer eintauchen. PyTorch verwendet Tensor fรผr jede Variable, รคhnlich wie Numpys ndarray, jedoch mit GPU-Berechnungsunterstรผtzung. Hier erklรคren wir das Netzwerkmodell, die Verlustfunktion, Backprop und den Optimizer.

Netzwerkmodell

Das Netzwerk kann durch Unterklassen von Torch.nn erstellt werden. Es gibt 2 Hauptteile,

  1. Der erste Teil besteht darin, die Parameter und Ebenen zu definieren, die Sie verwenden werden
  2. Der zweite Teil ist die Hauptaufgabe, der sogenannte Vorwรคrtsprozess, der eine Eingabe entgegennimmt und die Ausgabe vorhersagt.
Import torch
import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
 def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(3, 20, 5)
        self.conv2 = nn.Conv2d(20, 40, 5)
self.fc1 = nn.Linear(320, 10)

def forward(self, x):
       x = F.relu(self.conv1(x))
       x = F.relu(self.conv2(x))
       x = x.view(-1, 320)
       x = F.relu(self.fc1(x))
       return F.log_softmax(x)

net = Model()

Wie Sie oben sehen kรถnnen, erstellen Sie eine Klasse von nn.Module namens Model. Es enthรคlt 2 Conv2d-Ebenen und eine lineare Ebene. Die erste conv2d-Schicht nimmt eine Eingabe von 3 und die Ausgabeform von 20 an. Die zweite Schicht nimmt eine Eingabe von 20 an und erzeugt eine Ausgabeform von 40. Die letzte Schicht ist eine vollstรคndig verbundene Schicht in der Form 320 und erzeugt eine Ausgabe von 10.

Der Weiterleitungsprozess nimmt eine Eingabe von X und leitet sie an die conv1-Ebene weiter und fรผhrt die ReLU-Funktion aus.

In รคhnlicher Weise wird auch die conv2-Ebene gespeist. Danach wird das x in (-1, 320) umgeformt und in die endgรผltige FC-Ebene eingespeist. Bevor Sie die Ausgabe senden, verwenden Sie die Softmax-Aktivierungsfunktion.

Der Rรผckwรคrtsprozess wird automatisch von Autograd definiert, sodass Sie nur den Vorwรคrtsprozess definieren mรผssen.

Verlustfunktion

Mithilfe der Verlustfunktion wird gemessen, wie gut das Vorhersagemodell die erwarteten Ergebnisse vorhersagen kann. PyTorch verfรผgt bereits รผber viele Standardverlustfunktionen im Torch.nn-Modul. Beispielsweise kรถnnen Sie den Cross-Entropy Loss verwenden, um ein PyTorch-Klassifizierungsproblem mit mehreren Klassen zu lรถsen. Es ist einfach, die Verlustfunktion zu definieren und die Verluste zu berechnen:

loss_fn = nn.CrossEntropyLoss()

#training process
loss = loss_fn(out, target)

Mit PyTorch kรถnnen Sie ganz einfach Ihre eigene Verlustfunktionsberechnung verwenden.

Backprop

Um die Backpropagation durchzufรผhren, rufen Sie einfach los.backward() auf. Der Fehler wird berechnet, aber denken Sie daran, den vorhandenen Farbverlauf mit โ€žzero_grad()โ€œ zu lรถschen.

net.zero_grad() # to clear the existing gradient
loss.backward() # to perform backpropragation

Optimierer

torch.optim stellt allgemeine Optimierungsalgorithmen bereit. Sie kรถnnen einen Optimierer mit einem einfachen Schritt definieren:

optimizer = torch.optim.SGD(net.parameters(), lr = 0.01, momentum=0.9)

Sie mรผssen die Netzwerkmodellparameter und die Lernrate รผbergeben, damit die Parameter bei jeder Iteration nach dem Backprop-Prozess aktualisiert werden.

Einfache Regression mit PyTorch

Lassen Sie uns die einfache Regression anhand von PyTorch-Beispielen lernen:

Schritt 1) โ€‹โ€‹Erstellen unseres Netzwerkmodells

Unser Netzwerkmodell ist eine einfache lineare Schicht mit einer Eingabe- und einer Ausgabeform von 1.

from __future__ import print_function

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable

class Net(nn.Module):
   def __init__(self):
       super(Net, self).__init__()
       self.layer = torch.nn.Linear(1, 1)

   def forward(self, x):
       x = self.layer(x)      
       return x

net = Net()
print(net)

Und die Netzwerkausgabe sollte so sein

Net(
  (hidden): Linear(in_features=1, out_features=1, bias=True)
)

Schritt 2) Testdaten

Bevor Sie mit dem Trainingsprozess beginnen, mรผssen Sie unsere Daten kennen. Sie erstellen eine Zufallsfunktion, um unser Modell zu testen. Y = x3 sin(x)+ 3x+0.8 rand(100)

# Visualize our data
import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(100)
y = np.sin(x) * np.power(x,3) + 3*x + np.random.rand(100)*0.8

plt.scatter(x, y)
plt.show()

Hier ist das Streudiagramm unserer Funktion:

Streudiagramm der einfachen Regression mit PyTorch

Bevor Sie mit dem Trainingsprozess beginnen, mรผssen Sie das Numpy-Array in Variablen konvertieren, die von Torch und Autograd unterstรผtzt werden, wie im folgenden PyTorch-Regressionsbeispiel gezeigt.

# convert numpy array to tensor in shape of input size
x = torch.from_numpy(x.reshape(-1,1)).float()
y = torch.from_numpy(y.reshape(-1,1)).float()
print(x, y)

Schritt 3) Optimierer und Verlust

Als nรคchstes sollten Sie den Optimierer und die Verlustfunktion fรผr unseren Trainingsprozess definieren.

# Define Optimizer and Loss Function
optimizer = torch.optim.SGD(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()

Schritt 4) Schulung

Beginnen wir nun mit unserem Trainingsprozess. Mit einer Epoche von 250 iterieren Sie unsere Daten, um den besten Wert fรผr unsere Hyperparameter zu finden.

inputs = Variable(x)
outputs = Variable(y)
for i in range(250):
   prediction = net(inputs)
   loss = loss_func(prediction, outputs) 
   optimizer.zero_grad()
   loss.backward()        
   optimizer.step()       

   if i % 10 == 0:
       # plot and show learning process
       plt.cla()
       plt.scatter(x.data.numpy(), y.data.numpy())
       plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2)
       plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color':  'red'})
       plt.pause(0.1)

plt.show()

Schritt 5) Ergebnis

Wie Sie unten sehen kรถnnen, haben Sie die PyTorch-Regression erfolgreich mit einem neuronalen Netzwerk durchgefรผhrt. Tatsรคchlich wird die rote Linie im Diagramm bei jeder Iteration aktualisiert und รคndert ihre Position, um sie an die Daten anzupassen. In diesem Bild wird Ihnen jedoch nur das Endergebnis angezeigt, wie im folgenden PyTorch-Beispiel gezeigt:

Streudiagramm des Ergebnisses der einfachen Regression

Beispiel fรผr die Bildklassifizierung mit PyTorch

Eine der beliebtesten Methoden, um die Grundlagen zu erlernen tiefe Lernen ist mit dem MNIST-Datensatz. Es ist das โ€žHallo Weltโ€œ im Deep Learning. Der Datensatz enthรคlt handgeschriebene Zahlen von 0 โ€“ 9 mit insgesamt 60,000 Trainingsproben und 10,000 Testproben, die bereits mit der GrรถรŸe von 28ร—28 Pixeln beschriftet sind.

Bildklassifizierung mit PyTorch

Schritt 1) โ€‹โ€‹Verarbeiten Sie die Daten vor

Im ersten Schritt dieses PyTorch-Klassifizierungsbeispiels laden Sie den Datensatz mit dem Torchvision-Modul.

Bevor Sie mit dem Trainingsprozess beginnen, mรผssen Sie die Daten verstehen. Torchvision lรคdt den Datensatz und transformiert die Bilder mit den entsprechenden Anforderungen fรผr das Netzwerk, z. B. der Form und der Normalisierung der Bilder.

import torch
import torchvision
import numpy as np
from torchvision import datasets, models, transforms

# This is used to transform the images to Tensor and normalize it
transform = transforms.Compose(
   [transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

training = torchvision.datasets.MNIST(root='./data', train=True,
                                       download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(training, batch_size=4,
                                         shuffle=True, num_workers=2)

testing = torchvision.datasets.MNIST(root='./data', train=False,
                                      download=True, transform=transform)
test_loader = torch.utils.data.DataLoader(testing, batch_size=4,
                                        shuffle=False, num_workers=2)

classes = ('0', '1', '2', '3',
          '4', '5', '6', '7', '8', '9')
         
import matplotlib.pyplot as plt
import numpy as np

#create an iterator for train_loader
# get random training images
data_iterator = iter(train_loader)
images, labels = data_iterator.next()

#plot 4 images to visualize the data
rows = 2
columns = 2
fig=plt.figure()
for i in range(4):
   fig.add_subplot(rows, columns, i+1)
   plt.title(classes[labels[i]])
   img = images[i] / 2 + 0.5     # this is for unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

Die Transformationsfunktion wandelt die Bilder in Tensor um und normalisiert den Wert. Die Funktion Torchvision.transforms.MNIST lรคdt den Datensatz (sofern er nicht verfรผgbar ist) in das Verzeichnis herunter, legt den Datensatz bei Bedarf fรผr das Training fest und fรผhrt den Transformationsprozess durch.

Um den Datensatz zu visualisieren, verwenden Sie den data_iterator, um den nรคchsten Stapel von Bildern und Beschriftungen abzurufen. Sie verwenden Matplot, um diese Bilder und ihre entsprechende Beschriftung zu plotten. Wie Sie unten sehen kรถnnen, sind unsere Bilder und ihre Beschriftungen.

Beispiel fรผr die Bildklassifizierung mit PyTorch

Schritt 2) Netzwerkmodellkonfiguration

In diesem PyTorch-Beispiel erstellen Sie nun ein einfaches neuronales Netzwerk fรผr die PyTorch-Bildklassifizierung.

Hier stellen wir Ihnen eine weitere Mรถglichkeit vor, das Netzwerkmodell in PyTorch zu erstellen. Wir werden nn.Sequential verwenden, um ein Sequenzmodell zu erstellen, anstatt eine Unterklasse von nn.Module zu erstellen.

import torch.nn as nn

# flatten the tensor into 
class Flatten(nn.Module):
   def forward(self, input):
       return input.view(input.size(0), -1)

#sequential based model
seq_model = nn.Sequential(
           nn.Conv2d(1, 10, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           nn.Dropout2d(),
           nn.Conv2d(10, 20, kernel_size=5),
           nn.MaxPool2d(2),
           nn.ReLU(),
           Flatten(),
           nn.Linear(320, 50),
           nn.ReLU(),
           nn.Linear(50, 10),
           nn.Softmax(),
         )

net = seq_model
print(net)

Hier ist die Ausgabe unseres Netzwerkmodells

Sequential(
  (0): Conv2d(1, 10, kernel_size=(5, 5), stride=(1, 1))
  (1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (2): ReLU()
  (3): Dropout2d(p=0.5)
  (4): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
  (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (6): ReLU()
  (7): Flatten()
  (8): Linear(in_features=320, out_features=50, bias=True)
  (9): ReLU()
  (10): Linear(in_features=50, out_features=10, bias=True)
  (11): Softmax()
)

Netzwerkerklรคrung

  1. Die Reihenfolge ist, dass die erste Ebene eine Conv2D-Ebene mit einer Eingabeform von 1 und einer Ausgabeform von 10 mit einer KernelgrรถรŸe von 5 ist
  2. Als nรคchstes haben Sie eine MaxPool2D-Ebene
  3. Eine ReLU-Aktivierungsfunktion
  4. eine Dropout-Ebene, um Werte mit geringer Wahrscheinlichkeit zu lรถschen.
  5. Dann ein zweites Conv2d mit der Eingabeform 10 aus der letzten Ebene und der Ausgabeform 20 mit einer KernelgrรถรŸe von 5
  6. Als nรคchstes eine MaxPool2d-Ebene
  7. ReLU-Aktivierungsfunktion.
  8. Danach glรคtten Sie den Tensor, bevor Sie ihn in die lineare Ebene einspeisen
  9. Die lineare Ebene ordnet unsere Ausgabe der zweiten linearen Ebene mit der Softmax-Aktivierungsfunktion zu

Schritt 3)Trainieren Sie das Modell

Bevor Sie mit dem Trainingsprozess beginnen, mรผssen Sie das Kriterium und die Optimierungsfunktion einrichten.

Als Kriterium verwenden Sie CrossEntropyLoss. Als Optimierer verwenden Sie SGD mit einer Lernrate von 0.001 und einem Momentum von 0.9, wie im folgenden PyTorch-Beispiel gezeigt.

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

Der Weiterleitungsprozess nimmt die Eingabeform an und รผbergibt sie an die erste conv2d-Ebene. Von dort aus wird es dann in maxpool2d eingespeist und schlieรŸlich in die ReLU-Aktivierungsfunktion eingefรผgt. Der gleiche Vorgang findet in der zweiten conv2d-Ebene statt. Danach wird die Eingabe in (-1,320) umgeformt und in die fc-Schicht eingespeist, um die Ausgabe vorherzusagen.

Jetzt beginnen Sie mit dem Trainingsprozess. Sie durchlaufen unseren Datensatz zweimal oder mit einer Epoche von 2 und drucken den aktuellen Verlust alle 2 Chargen aus.

for epoch in range(2): 

#set the running loss at each epoch to zero
   running_loss = 0.0
# we will enumerate the train loader with starting index of 0
# for each iteration (i) and the data (tuple of input and labels)
   for i, data in enumerate(train_loader, 0):
       inputs, labels = data

# clear the gradient
       optimizer.zero_grad()

#feed the input and acquire the output from network
       outputs = net(inputs)

#calculating the predicted and the expected loss
       loss = criterion(outputs, labels)

#compute the gradient
       loss.backward()

#update the parameters
       optimizer.step()

       # print statistics
       running_loss += loss.item()
       if i % 1000 == 0:
           print('[%d, %5d] loss: %.3f' %
                 (epoch + 1, i + 1, running_loss / 1000))
           running_loss = 0.0

In jeder Epoche erhรคlt der Enumerator das nรคchste Eingabetupel und die entsprechenden Beschriftungen. Bevor wir die Eingabe in unser Netzwerkmodell einspeisen, mรผssen wir den vorherigen Gradienten lรถschen. Dies ist erforderlich, da der Gradient nach dem Rรผckwรคrtsprozess (Backpropagation-Prozess) akkumuliert und nicht ersetzt wird. Dann berechnen wir die Verluste aus der vorhergesagten Ausgabe aus der erwarteten Ausgabe. Danach fรผhren wir eine Backpropagation durch, um den Gradienten zu berechnen, und schlieรŸlich aktualisieren wir die Parameter.

Hier ist die Ausgabe des Trainingsprozesses

[1, 	1] loss: 0.002
[1,  1001] loss: 2.302
[1,  2001] loss: 2.295
[1,  3001] loss: 2.204
[1,  4001] loss: 1.930
[1,  5001] loss: 1.791
[1,  6001] loss: 1.756
[1,  7001] loss: 1.744
[1,  8001] loss: 1.696
[1,  9001] loss: 1.650
[1, 10001] loss: 1.640
[1, 11001] loss: 1.631
[1, 12001] loss: 1.631
[1, 13001] loss: 1.624
[1, 14001] loss: 1.616
[2, 	1] loss: 0.001
[2,  1001] loss: 1.604
[2,  2001] loss: 1.607
[2,  3001] loss: 1.602
[2,  4001] loss: 1.596
[2,  5001] loss: 1.608
[2,  6001] loss: 1.589
[2,  7001] loss: 1.610
[2,  8001] loss: 1.596
[2,  9001] loss: 1.598
[2, 10001] loss: 1.603
[2, 11001] loss: 1.596
[2, 12001] loss: 1.587
[2, 13001] loss: 1.596
[2, 14001] loss: 1.603

Schritt 4) Testen Sie das Modell

Nachdem Sie unser Modell trainiert haben, mรผssen Sie es mit anderen Bildsรคtzen testen oder bewerten.

Wir verwenden einen Iterator fรผr den Testlader. Dieser generiert einen Stapel von Bildern und Beschriftungen, die an das trainierte Modell รผbergeben werden. Die vorhergesagte Ausgabe wird angezeigt und mit der erwarteten Ausgabe verglichen.

#make an iterator from test_loader
#Get a batch of training images
test_iterator = iter(test_loader)
images, labels = test_iterator.next()

results = net(images)
_, predicted = torch.max(results, 1)

print('Predicted: ', ' '.join('%5s' % classes[predicted[j]] for j in range(4)))

fig2 = plt.figure()
for i in range(4):
   fig2.add_subplot(rows, columns, i+1)
   plt.title('truth ' + classes[labels[i]] + ': predict ' + classes[predicted[i]])
   img = images[i] / 2 + 0.5     # this is to unnormalize the image
   img = torchvision.transforms.ToPILImage()(img)
   plt.imshow(img)
plt.show()

Beispiel fรผr die Bildklassifizierung mit PyTorch

Zusammenfassung

  • PyTorch ist eine Open-Source-Torch-basierte Lรถsung Maschinelles lernen Bibliothek fรผr Verarbeitung natรผrlicher Sprache mit automatisierten Python.
  • Vorteile von PyTorch: 1) Einfache Bibliothek, 2) Dynamischer Rechengraph, 3) Bessere Leistung, 4) Native Python
  • PyTorch verwendet Tensor fรผr jede Variable, รคhnlich wie numpys ndarray, jedoch mit Unterstรผtzung fรผr GPU-Berechnungen.
  • Eine der beliebtesten Methoden zum Erlernen der Grundlagen des Deep Learning ist der MNIST-Datensatz.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: