Whatsapp Telegram Telegram Call Anrufen

PyTorch Grundlagen


PyTorch ist ein leistungsstarkes Framework für maschinelles Lernen und tiefe neuronale Netze. Um die volle Leistungsfähigkeit von PyTorch zu verstehen, ist es wichtig, die Grundlagen zu beherrschen. In diesem Artikel werden wir die Grundbausteine von PyTorch, insbesondere Tensors und die automatische Differenzierung mit Autograd, im Detail besprechen.

1. Tensors: Die Bausteine

Ein Tensor ist das fundamentale Datenobjekt in PyTorch. Es ist ein mehrdimensionales Array, das zur Speicherung und Manipulation von Daten verwendet wird. Tensors sind die Bausteine neuronaler Netzwerke, da sie die Gewichte und Eingabedaten der Modelle enthalten.

1.1 Erstellen von Tensors

Es gibt verschiedene Möglichkeiten, Tensors in PyTorch zu erstellen:

1. Manuelles Erstellen von Tensors:

import torch

# Erstellen eines 1-dimensionalen Tensors
tensor_1d = torch.tensor([1, 2, 3, 4])

# Erstellen eines 2-dimensionalen Tensors
tensor_2d = torch.tensor([[1, 2, 3], [4, 5, 6]])

# Erstellen eines Tensors mit spezifischen Daten- und Typenangaben
tensor_float = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32)

print(tensor_1d)
print(tensor_2d)
print(tensor_float)


Output:

tensor([1, 2, 3, 4])
tensor([[1, 2, 3],
        [4, 5, 6]])
tensor([1., 2., 3.])


2. Erstellen von Tensors aus Numpy-Arrays:

import numpy as np

# Erstellen eines Numpy-Arrays
np_array = np.array([[1, 2], [3, 4]])

# Umwandeln des Numpy-Arrays in einen Tensor
tensor_from_np = torch.tensor(np_array)

print(tensor_from_np)

Output:

tensor([[1, 2],
        [3, 4]])

3. Erstellen von Tensors mit Zufallswerten

# Erstellen eines 2x3-Tensors mit zufälligen Werten
random_tensor = torch.rand((2, 3))

print(random_tensor)

Output (Beispiel, tatsächliche Werte können variieren):

tensor([[0.5024, 0.1954, 0.8655],
        [0.6736, 0.7822, 0.4502]])


2. Tensor-Operationen

PyTorch bietet eine Vielzahl von Operationen, die auf Tensors durchgeführt werden können. Hier sind einige grundlegende Operationen:


2.1  Arithmetische Operationen:

# Erstellen von zwei Tensors
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])

# Addition
c = a + b

# Multiplikation
d = a * b

# Matrixmultiplikation
e = torch.matmul(a.view(1, 3), b.view(3, 1))

print(c)
print(d)
print(e)

Output:

tensor([5, 7, 9])
tensor([ 4, 10, 18])
tensor([[32]])


2.2 Tensor-Reshaping:

# Erstellen eines 2x3-Tensors
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])

# Reshaping in einen 3x2-Tensor
reshaped_tensor = tensor.view(3, 2)

print(reshaped_tensor)

Output:

tensor([[1, 2],
        [3, 4],
        [5, 6]])


2.3 Indexieren

# Erstellen eines 2-dimensionalen Tensors
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])

# Zugriff auf einzelne Elemente
element = tensor[0, 1]

print(element)

Output:

tensor(2)


2.4 Slicen

# Erstellen eines 2-dimensionalen Tensors
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])

# Zugriff auf eine Teilmenge des Tensors
slice_tensor = tensor[:, 1:3]

print(slice_tensor)

Output:

tensor([[2, 3],
        [5, 6]])

2.5 Verbinden

# Erstellen von zwei Tensors
tensor1 = torch.tensor([[1, 2], [3, 4]])
tensor2 = torch.tensor([[5, 6], [7, 8]])

# Verbinden entlang einer Dimension
concat_tensor = torch.cat((tensor1, tensor2), dim=0)

print(concat_tensor)

Output:

tensor([[1, 2],
        [3, 4],
        [5, 6],
        [7, 8]])


3. Autograd: Automatische Differenzierung

Autograd ist eine der leistungsstärksten Funktionen von PyTorch, die die automatische Berechnung von Gradienten ermöglicht. Dies ist besonders nützlich beim Training neuronaler Netze.

4. Konzept der Berechnungsgrafen

Ein Berechnungsgraf ist eine Darstellung der Reihenfolge, in der Berechnungen durchgeführt werden. In PyTorch wird der Berechnungsgraf dynamisch erstellt, was bedeutet, dass er während der Ausführung des Codes aufgebaut wird. Dies ermöglicht eine flexible und intuitive Handhabung von Modellen.


4.1 Verwendung von Autograd zur Gradientenberechnung

Um die Gradienten eines Tensors zu berechnen, müssen Sie requires_grad=True setzen. Hier ist ein Beispiel:

import torch

# Erstellen eines Tensors mit Gradientenberechnung
x = torch.tensor([2.0, 3.0], requires_grad=True)

# Durchführung einer Berechnung
y = x[0] * x[1] + x[1]**2

# Rückwärtsdurchführung zur Berechnung des Gradienten
y.backward()

# Ausgabe der Gradienten
print(x.grad)

Output:

tensor([3., 8.])

In diesem Beispiel wird die Funktion y = x[0] * x[1] + x[1]**2 berechnet und die Gradienten bezüglich x werden mit backward() berechnet.

5. Fazit

Die Grundlagen von PyTorch, insbesondere Tensors und die automatische Differenzierung mit Autograd, sind essenziell für das Verständnis und die Anwendung des Frameworks. Tensors dienen als zentrale Datenstruktur, während Autograd die effiziente Berechnung von Gradienten ermöglicht, die für das Training neuronaler Netzwerke unerlässlich sind. Mit diesen Grundlagen sind Sie gut gerüstet, um komplexere Modelle und Anwendungen in PyTorch zu entwickeln.

Durch das Verständnis und die Anwendung dieser Grundkonzepte können Sie leistungsfähige und flexible Machine-Learning-Modelle erstellen. Nutzen Sie die umfangreichen Möglichkeiten von PyTorch, um Ihre Projekte erfolgreich umzusetzen.













CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!