© Pasko Maksim/Shutterstock.com
Kiosk Specials
Entwicklung, Training und Deployment von neuronalen Netzwerken

Neuronale Netzwerke mit PyTorch

PyTorch [1] ist zur Zeit eins der populärsten Frameworks zur Entwicklung und zum Trainieren von neuronalen Netzwerken. Es zeichnet sich vor allem durch seine hohe Flexibilität und die Möglichkeit aus, Standard-Python-Debugger einzusetzen. Dabei müssen keinerlei Abstriche bezüglich der Trainingsperformance gemacht werden.

Chi Nhan Nguyen


Aufgrund der genannten Eigenschaften ist PyTorch vor allem bei Deep-Learning-Forschern und bei Entwicklern im Bereich Natural Language Processing (NLP) sehr beliebt. Auch im Bereich Integration und Deployment wurden in der letzten Version, dem ersten offiziellen Release 1.0, wesentliche Neuerungen eingeführt.

Tensoren

Die elementare Datenstruktur zur Repräsentation und Verarbeitung von Daten in PyTorch ist torch.Tensor. Der mathematische Begriff Tensor steht für eine Generalisierung von Vektoren und Matrizen. In PyTorch werden Tensoren in Form von multidimensionalen Arrays implementiert. Ein Vektor ist dabei nichts anderes als ein eindimensionaler Tensor (oder ein Tensor mit Rang 1), dessen Elemente Zahlen eines bestimmten Datentyps (z. B. torch.float64 oder torch.int32) sein können. Eine Matrix ist somit ein zweidimensionaler Tensor (Rang 2) und ein Skalar ein nulldimensionaler Tensor (Rang 0). Tensoren noch höherer Dimensionen besitzen keine speziellen Namen mehr (Abb. 1).

Abb. 1: Tensoren

Das Interface für PyTorch-Tensoren lehnt sich stark an das Design von multidimensionalen Arrays in NumPy [2] an. Genauso wie NumPy stellt PyTorch vordefinierte Methoden bereit, mit denen man Tensoren manipulieren und Operationen der linearen Algebra durchführen kann. Einige Beispiele sind in Listing 1 dargestellt.

Listing 1# Generierung eines eindimensionalen Tensors mit # 8 (uninitialisierten) Elementen (float32)x = torch.Tensor(8)x.double() # Konvertierung nach float64 Tensorx.int() # Konvertierung nach int32 Datentyp # 2D-Long-Tensor vorinitialisiert mit Nullenx = torch.zeros([2, 2]) # 2D-Long-Tensor vorinitialisiert mit Einsen # und anschließende Konvertierung nach int64y = torch.ones([2, 3]).long() # Zusammenfügen zweier Tensoren entlang Dimension 1x = torch.cat([x, y], 1)  x.sum() # Summe über alle Elementex.mean() # Durchschnitt über alle Elemente # Matrixmultiplikationx.mm(y) # Transponierenx.t() # Inneres Produkt zweier Tensorentorch.dot(x, y)  # Berechnet Eigenwerte und -vektorentorch.eig(x) # Gibt Tensor mit dem Sinus der Elemente zurücktorch.sin(x)

Die Anwendung optimierter Bibliotheken wie BLAS [3], LAPACK [4] und MKL [5] erlaubt eine höchst performante Ausführung von Tensoroperationen auf der CPU (vor allem mit Intel-Prozessoren). Zusätzlich unterstützt PyTorch (im Gegensatz zu NumPy) auch die Ausführung der Operationen auf NVIDIA-Grafikkarten mit Hilfe des CUDA-Toolkits [6] und der cuDNN-Bibliothek [7]. Listing 2 zeigt an einem Beispiel, wie man Tens...

Kiosk Specials
Entwicklung, Training und Deployment von neuronalen Netzwerken

Neuronale Netzwerke mit PyTorch

PyTorch [1] ist zur Zeit eins der populärsten Frameworks zur Entwicklung und zum Trainieren von neuronalen Netzwerken. Es zeichnet sich vor allem durch seine hohe Flexibilität und die Möglichkeit aus, Standard-Python-Debugger einzusetzen. Dabei müssen keinerlei Abstriche bezüglich der Trainingsperformance gemacht werden.

Chi Nhan Nguyen


Aufgrund der genannten Eigenschaften ist PyTorch vor allem bei Deep-Learning-Forschern und bei Entwicklern im Bereich Natural Language Processing (NLP) sehr beliebt. Auch im Bereich Integration und Deployment wurden in der letzten Version, dem ersten offiziellen Release 1.0, wesentliche Neuerungen eingeführt.

Tensoren

Die elementare Datenstruktur zur Repräsentation und Verarbeitung von Daten in PyTorch ist torch.Tensor. Der mathematische Begriff Tensor steht für eine Generalisierung von Vektoren und Matrizen. In PyTorch werden Tensoren in Form von multidimensionalen Arrays implementiert. Ein Vektor ist dabei nichts anderes als ein eindimensionaler Tensor (oder ein Tensor mit Rang 1), dessen Elemente Zahlen eines bestimmten Datentyps (z. B. torch.float64 oder torch.int32) sein können. Eine Matrix ist somit ein zweidimensionaler Tensor (Rang 2) und ein Skalar ein nulldimensionaler Tensor (Rang 0). Tensoren noch höherer Dimensionen besitzen keine speziellen Namen mehr (Abb. 1).

Abb. 1: Tensoren

Das Interface für PyTorch-Tensoren lehnt sich stark an das Design von multidimensionalen Arrays in NumPy [2] an. Genauso wie NumPy stellt PyTorch vordefinierte Methoden bereit, mit denen man Tensoren manipulieren und Operationen der linearen Algebra durchführen kann. Einige Beispiele sind in Listing 1 dargestellt.

Listing 1# Generierung eines eindimensionalen Tensors mit # 8 (uninitialisierten) Elementen (float32)x = torch.Tensor(8)x.double() # Konvertierung nach float64 Tensorx.int() # Konvertierung nach int32 Datentyp # 2D-Long-Tensor vorinitialisiert mit Nullenx = torch.zeros([2, 2]) # 2D-Long-Tensor vorinitialisiert mit Einsen # und anschließende Konvertierung nach int64y = torch.ones([2, 3]).long() # Zusammenfügen zweier Tensoren entlang Dimension 1x = torch.cat([x, y], 1)  x.sum() # Summe über alle Elementex.mean() # Durchschnitt über alle Elemente # Matrixmultiplikationx.mm(y) # Transponierenx.t() # Inneres Produkt zweier Tensorentorch.dot(x, y)  # Berechnet Eigenwerte und -vektorentorch.eig(x) # Gibt Tensor mit dem Sinus der Elemente zurücktorch.sin(x)

Die Anwendung optimierter Bibliotheken wie BLAS [3], LAPACK [4] und MKL [5] erlaubt eine höchst performante Ausführung von Tensoroperationen auf der CPU (vor allem mit Intel-Prozessoren). Zusätzlich unterstützt PyTorch (im Gegensatz zu NumPy) auch die Ausführung der Operationen auf NVIDIA-Grafikkarten mit Hilfe des CUDA-Toolkits [6] und der cuDNN-Bibliothek [7]. Listing 2 zeigt an einem Beispiel, wie man Tens...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang