[PYTHON] Über die Sache, dass Fackelzusammenfassung wirklich verwendet werden kann, wenn ein Modell mit Pytorch erstellt wird

Einführung

Ich baue mein eigenes Modell und bevor ich es mit der vollständig verbundenen Ebene verbinde, frage ich immer: "Was sind die Eigenschaften der Eingabe?" Sie können die Struktur des Modells verstehen, indem Sie häufig "print (model)" eingeben, aber Sie können die Größe der Feature Map nicht überprüfen. Hier bietet sich die "Fackelzusammenfassung" an.

Wer ist die Fackelzusammenfassung?

Einfach ausgedrückt ist es ein "Sie können die Größe der Feature-Map sehen".

Verwendung der Taschenlampenübersicht

Machen Sie zuerst ein Modell

Diesmal habe ich das folgende einfache Modell gemacht. Ich habe nicht geschrieben, bis ich es klassifiziere.

Falten ➡︎BN➡︎ReLU➡︎pooling➡︎ Falten ➡︎BN➡︎ReLU➡︎pooling➡︎ Falten ➡︎ Global Average Pooling

                                                                                                                                     
import torch
import torch.nn as nn
   
class SimpleCNN(nn.Module):     
    def __init__(self):
        super(SimpleCNN,self).__init__()
 
        self.conv1 = nn.Conv2d(3,16,kernel_size=3,stride=1)
        self.bn1 = nn.BatchNorm2d(16)
        self.relu = nn.ReLU(inplace=True)
        self.maxpool = nn.MaxPool2d((2,2))
        self.conv2 = nn.Conv2d(16,32,kernel_size=3,stride=1)
        self.bn2 = nn.BatchNorm2d(32)
        self.conv3 = nn.Conv2d(32,64,kernel_size=3,stride=1)
        self.gap = nn.AdaptiveMaxPool2d(1)
  
    def forward(self,x):  
        x = self.conv1(x)
        x = self.bn1(x)
        x = self.relu(x) 
        x = self.maxpool(x)
        x = self.conv2(x)
        x = self.bn2(x)
        x = self.relu(x)
        x = self.maxpool(x)
        x = self.conv3(x)
        x = self.gap(x)
   
        return x

Installation der Taschenlampenübersicht

pip install torchsummary

Fackelzusammenfassung Verwendung

from torchsummary import summary
model = SimpleCNN()  
summary(model,(3,224,224)) # summary(model,(channels,H,W))

Dieses Mal versuche ich, eine Bildeingabegröße von 224 x 224 anzunehmen. Wenn Sie andere Auflösungen ausprobieren möchten, ändern Sie die Werte von "H" und "W".

Zusammenfassende Ausgabe


----------------------------------------------------------------
        Layer (type)               Output Shape         Param #
================================================================
            Conv2d-1         [-1, 16, 222, 222]             448
       BatchNorm2d-2         [-1, 16, 222, 222]              32
              ReLU-3         [-1, 16, 222, 222]               0
         MaxPool2d-4         [-1, 16, 111, 111]               0
            Conv2d-5         [-1, 32, 109, 109]           4,640
       BatchNorm2d-6         [-1, 32, 109, 109]              64
              ReLU-7         [-1, 32, 109, 109]               0
         MaxPool2d-8           [-1, 32, 54, 54]               0
            Conv2d-9           [-1, 64, 52, 52]          18,496
AdaptiveMaxPool2d-10             [-1, 64, 1, 1]               0
================================================================
Total params: 23,680
Trainable params: 23,680
Non-trainable params: 0
----------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 30.29
Params size (MB): 0.09
Estimated Total Size (MB): 30.95
----------------------------------------------------------------

Es ist sehr praktisch, die Form der Ausgabe überprüfen zu können. Ich bin dankbar, dass es auch die Anzahl der Parameter zählt.

Am Ende

Fackelsummary ist praktisch, also bitte benutzen.

Recommended Posts

Über die Sache, dass Fackelzusammenfassung wirklich verwendet werden kann, wenn ein Modell mit Pytorch erstellt wird
Über die Angelegenheit, dass das re.compiled-Objekt für das re.match-Muster verwendet werden kann
Über den Inhalt von wscript beim Erstellen einer solchen D-Sprachumgebung mit Waf
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können
Ein Memo beim Erstellen einer Umgebung, die vorerst mit Lambda @ Edge debuggt werden kann
[Python] Code, der zu Beginn beim Scraping als Anfänger mit Hirntod geschrieben werden kann
Ein Modell, das die Gitarre mit fast.ai identifiziert
Über localhost: Auf 4040 kann nicht zugegriffen werden, nachdem Spark mit Docker ausgeführt wurde
Formatieren Sie DataFrame-Daten mit Pytorch in ein Formular, das mit NN trainiert werden kann
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
[Django] Über Benutzer, die für Vorlagen verwendet werden können
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Atcoder] [C ++] Ich habe ein Testautomatisierungstool erstellt, das während des Wettbewerbs verwendet werden kann
Formatübersicht der Formate, die mit gensim serialisiert werden können
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann
Goroutine, die im Feld verwendet werden kann (errgroup.Group Edition)
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Vorsichtsmaßnahmen, die beim Aufbau einer PYTHON-Umgebung beachtet werden müssen
Ich habe die Vorbehandlung untersucht, die mit PyCaret durchgeführt werden kann
Lassen Sie uns ein Diagramm erstellen, auf das mit IPython geklickt werden kann
Ich habe versucht, es zu erweitern, damit die Datenbank mit der Analysesoftware von Wiire verwendet werden kann
[Python] Ein Programm, das die maximale Anzahl von Spielzeugen findet, die mit Ihrem Geld gekauft werden können
Erstellen Sie eine Spinbox, die mit Tkinter in Binär angezeigt werden kann
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
Erstellen Sie ein Währungsdiagramm, das mit Plotly (2) verschoben werden kann.
Erstellen Sie eine Spinbox, die mit Tkinter in HEX angezeigt werden kann
Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Erstellen Sie ein Währungsdiagramm, das mit Plotly (1) verschoben werden kann.
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Ich habe eine generische Python-Projektvorlage erstellt
Akustisches Signalverarbeitungsmodul, das mit Python-Sounddevice ASIO [Anwendung] verwendet werden kann
Das LXC Web Panel, das LXC mit einem Browser bedienen kann, war wunderbar
Blenden Sie die Warnung aus, dass zsh auf dem Mac standardmäßig verwendet werden kann
Erstellen Sie eine Web-App, die mit Plotly Dash einfach visualisiert werden kann
Ich habe einen einfachen Timer erstellt, der vom Terminal aus gestartet werden kann
Python-Sound Gerät ASIO akustisches Signalverarbeitungsmodul [Basic]
Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
Es scheint, dass alle untergeordneten Bestellungen storniert werden können, um alle übergeordneten Bestellungen (Sonderbestellungen) mit der Bitflyer-API zu stornieren
[Python] Erstellen eines Tools, mit dem Python-Dateien mit tkinter & über den Teil, der abgefangen wurde, aufgelistet, ausgewählt und ausgeführt werden können
Artikel, der eine Person sein kann, die den Mechanismus der API versteht und beherrscht (mit Python-Code)
[Python3] Code, der verwendet werden kann, wenn Sie die Erweiterung eines Bildes sofort ändern möchten
Hinweise zum Erstellen von Zahlen, die mit matplotlib in Zeitschriften veröffentlicht werden können
Über die Sache, dass Softmax am Ende von Torchvisions Modell nicht benötigt wird.
Wenn "kann beim Erstellen eines PIE-Objekts nicht verwendet werden" in make angezeigt wird
Ich habe versucht, die Operationen zusammenzufassen, die wahrscheinlich mit numpy-stl verwendet werden
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
[Hackason] Über das Erstellen eines Werkzeugs, das auf Raspberry Pi gedruckt werden kann [Praktisches Werkzeug]
Ich habe versucht, einen x86-Bootloader zu erstellen, der vmlinux mit Rust booten kann
Kratzmodul "Gaspacho", das einfacher zu verwenden ist als Beautiful Soup