Deep-Learning-Modelle werden in PyTorch als dynamische Berechnunggraphen (Dynamic Computational Graph, DCG) dargestellt. Ein Berechnungsgraph bildet den Datenfluss zwischen den verschiedenen Operationen in einem mathematischen System ab. Beim Deep Learning übersetzen sie also quasi den Code eines neuronalen Netzes in ein Flussdiagramm, das die an jedem Knoten durchgeführten Operationen und die Abhängigkeiten zwischen den verschiedenen Netzebenen anzeigt – die Schritte und Abfolgen, aus denen Eingabe- zu Ausgabedaten werden.
Dynamische Berechnungsgraphen (wie die in PyTorch) und statische (wie in TensorFlow) unterscheiden sich dahingehend, dass DCGs die Berechnungen und die Beziehungen zwischen ihnen erst zur Laufzeit spezifizieren. Bei einem statischen Berechnungsgraphen muss also die Architektur des gesamten neuronalen Netzes vollständig festgelegt und kompiliert sein, bevor es ausgeführt werden kann. DCGs hingegen können iteriert und im laufenden Betrieb geändert werden.
Dies macht DCGs besonders nützlich für Debugging und Prototyping, da bestimmte Teile des Modellcodes geändert oder isoliert ausgeführt werden können, ohne dass das gesamte Modell zurückgesetzt werden muss – was bei den sehr großen Deep Learning-Modellen, die für anspruchsvolle Computer Vision- und NLP-Aufgaben verwendet werden, eine Verschwendung von Zeit und Rechenressourcen darstellen kann. Die Vorteile dieser Flexibilität erstrecken sich auch auf die Modellschulung, da dynamische Berechnungsgraphen während der Backpropagation leicht in umgekehrter Richtung erzeugt werden können.
Während ihre feste Struktur eine höhere Recheneffizienz ermöglichen kann, verfügen statische Rechendiagramme über eine begrenzte Flexibilität: Beispielsweise können sie ein Modell erstellen, das abhängig von den Eingabedaten eine unterschiedliche Anzahl von Schichten verwendet – wie ein Convolutional Neural Network (CNN), das Bilder unterschiedlicher Größen verarbeiten kann – ist bei statischen Diagrammen sehr schwierig.