Anleitung: Vision Transformer (ViT)

Anleitung: Vision Transformer (ViT)

Die gesamte ViT-Architektur setzt sich aus verschiedenen Komponenten zusammen, die erfolgreich erstellt wurden. Diese Komponenten umfassen den Patcher, die Positionseinfügung und die Transformator-Encoder, sowie den MLP-Head. Der Codeblock 17 zeigt die Struktur des gesamten ViT-Modells, das von der Klasse ViT abgeleitet ist und die einzelnen Komponenten zusammenführt.

In der Klasse ViT werden verschiedene Elemente initialisiert, darunter der Patcher, die Positionseinfügung, die Transformator-Encoder und der MLP-Head. Die Anzahl der Transformator-Encoder wird durch die Konstante NUM_ENCODERS festgelegt, die in diesem Fall 12 beträgt. Der Output des Transformator-Encoders muss geschnitten werden, da nur der Klassenteil vom MLP-Head verarbeitet wird.

Um zu überprüfen, ob das ViT-Modell ordnungsgemäß funktioniert, wird im Codeblock 18 eine Testoperation durchgeführt. Dabei wird das Modell auf einem zufällig generierten Eingangstensor angewendet und die Größe des Ausgangstensors ausgegeben. Das Ergebnis zeigt, dass das Modell wie erwartet funktioniert und den Eingangstensor erfolgreich verarbeitet.

Zusätzlich kann die detaillierte Struktur des Netzwerks mithilfe der summary()-Funktion angezeigt werden, wie im Codeblock 19 dargestellt. Dabei wird die Anzahl der Parameter des Modells angezeigt, die bei etwa 86 Millionen liegen. Dies entspricht der Anzahl, die in Figur 3 angegeben ist und verdeutlicht die Komplexität der ViT-Architektur.