本文介紹幾種在centos系統上使用pytorch進行模型可視化的工具,包括hiddenlayer、pytorchviz和TensorBoard(包含tensorboardX)。
一、hiddenlayer:神經網絡結構可視化
hiddenlayer庫專注于神經網絡結構的可視化。
- 安裝:
pip install hiddenlayer
- 使用方法示例: 以下代碼展示如何可視化一個簡單的卷積神經網絡:
import hiddenlayer as h import torch import torch.nn as nn class ConvNet(nn.Module): # 類名修改為更符合規范的駝峰命名法 def __init__(self): super(ConvNet, self).__init__() self.conv1 = nn.Sequential( nn.Conv2d(1, 16, 3, 1, 1), nn.ReLU(), nn.AvgPool2d(2, 2) ) self.conv2 = nn.Sequential( nn.Conv2d(16, 32, 3, 1, 1), nn.ReLU(), nn.MaxPool2d(2, 2) ) self.fc = nn.Sequential( nn.Linear(32 * 7 * 7, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU() ) self.out = nn.Linear(64, 10) def forward(self, x): x = self.conv1(x) x = self.conv2(x) x = x.view(x.size(0), -1) x = self.fc(x) output = self.out(x) return output model = ConvNet() # 使用更具描述性的變量名 vis_graph = h.build_graph(model, torch.zeros([1, 1, 28, 28])) vis_graph.theme = h.graph.themes["blue"].copy() vis_graph.save("./demo1.png")
二、pytorchviz:基于graphviz的神經網絡可視化
pytorchviz利用graphviz庫,可視化網絡結構和計算圖。
- 安裝:
pip install torchviz
- 使用方法示例:
import torch from torchviz import make_dot import torch.nn as nn class ConvNet(nn.Module): # 類名修改為更符合規范的駝峰命名法 def __init__(self): super(ConvNet, self).__init__() self.conv1 = nn.Sequential( nn.Conv2d(1, 16, 3, 1, 1), nn.ReLU(), nn.AvgPool2d(2, 2) ) self.conv2 = nn.Sequential( nn.Conv2d(16, 32, 3, 1, 1), nn.ReLU(), nn.MaxPool2d(2, 2) ) self.fc = nn.Sequential( nn.Linear(32 * 7 * 7, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU() ) self.out = nn.Linear(64, 10) def forward(self, x): x = self.conv1(x) x = self.conv2(x) x = x.view(x.size(0), -1) x = self.fc(x) output = self.out(x) return output model = ConvNet() input_tensor = torch.randn(1, 3, 224, 224) dot = make_dot(model(input_tensor), params=dict(model.named_parameters())) dot.render("model", format="pdf")
三、TensorBoard:訓練過程可視化 (包含tensorboardX)
TensorBoard是一個強大的可視化工具,tensorboardX是其PyTorch版本。
- 安裝:
pip install tensorboard torchvision # torchvision 可選,取決于你的數據
- 使用方法示例 (使用torch.utils.tensorboard):
from torch.utils.tensorboard import SummaryWriter import torch writer = SummaryWriter() num_epochs = 10 # 添加epochs數量 for epoch in range(num_epochs): # 訓練代碼 (此處省略) loss = 0.5 # 替換為實際的loss值 accuracy = 0.8 # 替換為實際的accuracy值 writer.add_scalar('Loss/train', loss, epoch) writer.add_scalar('Accuracy/train', accuracy, epoch) writer.close()
- 啟動TensorBoard:
tensorboard --logdir=runs
訪問http://localhost:6006查看可視化結果。
四、總結
以上介紹了三種PyTorch可視化工具,選擇合適的工具取決于你的需求。hiddenlayer和pytorchviz適合可視化模型結構,而TensorBoard則更適合可視化訓練過程中的指標變化。 請根據實際情況選擇并安裝相應的庫。 代碼示例中已對變量名和類名進行了調整,使其更符合Python代碼規范。