Verwenden Sie Tensorboard, um die Netzwerkstruktur zu visualisieren (basierend auf Pytorch).

Vorwort

Wenn wir ein Netzwerkmodell erstellen, hoffen wir normalerweise, ein besseres intuitives Gefühl für das von uns erstellte Netzwerkmodell zu bekommen, um die Struktur des Netzwerkmodells besser zu verstehen. Die Verwendung des Tensorboard-Tools bietet uns eine bequeme Möglichkeit.

Tensorboard-Übersicht

Tensorboard ist ein Open-Source-Visualisierungstool von Google. Es ist eine Zusatzkomponente von TensorFlow, kann aber auch im Pytorch-Projekt verwendet werden.

Es hat folgende Hauptfunktionen:

  • Visualisiertes Netzwerkmodell: Sie können die Struktur des Modells intuitiv verstehen, einschließlich der Stapelung von Schichten, Aktivierungsfunktionen usw.
  • Erfassen und zeichnen Sie Änderungen verschiedener Indikatoren während des Trainingsprozesses auf, z. B. Verlustkurven, Genauigkeitskurven usw.
  • Visualisierung von Merkmalsräumen und hochdimensionalen Daten.
  • Visualisieren Sie Verläufe, Gewichte, sogar Ausgabeverteilungen von Aktivierungsfunktionen und mehr.

In diesem Blog werden hauptsächlich die Funktionen des visuellen Netzwerkmodells Tensorboard vorgestellt

Code

Wir bauen ein einfaches neuronales Netzwerk auf und verlassen uns auf die Bibliotheksumgebung

import torch
import torch.nn as nn
import torch.nn.functional as F

from torch.utils.tensorboard import SummaryWriter

Erstellen Sie ein Netzwerkmodell

class Net(nn.Module):
    def __init__(self,input_dim,layer1_dim,layer2_dim,output_dim):  
        super(Net,self).__init__()
        self.flatten = nn.Flatten() 
        self.layer1 = nn.Sequential(nn.Linear(input_dim,layer1_dim),nn.ReLU())
        self.layer2 = nn.Sequential(nn.Linear(layer1_dim,layer2_dim),nn.ReLU())
        self.out = nn.Sequential(nn.Linear(layer2_dim,output_dim),nn.Softmax(dim=-1))

    def forward(self,x):
        x = self.flatten(x)
        x = self.layer1(x)
        x = self.layer2(x)
        x = self.out(x)
        return x

# 初始化网络中的值
input_dim,layer1_dim,layer2_dim,output_dim=32*32,512,128,10
model = Net(input_dim,layer1_dim,layer2_dim,output_dim)

Das Netzwerk besteht aus drei vollständig verbundenen Schichten und die Form der Eingabedaten ist32\mal 32

# 定义输入模型的数据,1表示批次,这里可以忽略
input_data = torch.rand(1,32,32)

# 模型输出的数据
output_data = model(input_data)

Die nächsten beiden Schritte bestehen darin, mit SummaryWriter Protokolle zu erstellen und das erstellte Netzwerkmodell zu speichern.

with SummaryWriter(log_dir=r"D:\CSDN_point\12_22\logs", comment="Net") as w:
    w.add_graph(model, input_data)

Der Parameter log_dir ist der lokale Speicherpfad der Protokolldatei, und comment ist der Kommentar des Protokolls. Add_graph() übergibt das Netzwerkmodell und die Eingabedaten. Nach der Ausführung wird die entsprechende Datei im angegebenen Pfad generiert. Öffnen Sie die Geben Sie oben den Dateispeicherort ein, an dem sich die Protokolldatei befindet. Geben Sie cmd in den Pfad ein, um das Befehlszeilenfenster zu öffnen

Geben Sie im Befehlszeilenfenster ein

tensorboard --logdir logs

Kopieren Sie die zurückgegebene URL und öffnen Sie sie im Browser, um die entsprechenden Netzwerkvisualisierungsergebnisse zu erhalten.

Jeder ist herzlich willkommen, mitzudiskutieren und sich auszutauschen~


Guess you like

Origin blog.csdn.net/weixin_57506268/article/details/135304843