版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/xiaoxifei/article/details/82735355
最近剛剛發現一個非常好用的顯示模型神器Netron
https://github.com/lutzroeder/Netron
借助這個工具可以像windows的軟件一樣導入已經訓練好的模型加權重即可一鍵生成
我目前看了下visdom實現pytorch的網絡結構查找還是很困難,在stackflow上有很多人使用自己編寫的基於matplotlib來實現網絡結構可視化適用性也不是很好,后來查找到使用基於tensorboard所開發的tensorboardX可以很方便的實現pytorch網絡結構的可視化,因此決定采用這種方式。
1. tensorboardX的簡介
tensorboardX的項目路徑:https://github.com/lanpa/tensorboardX
tensorboardX是基於tensorboard的思想用來寫tensorboard events的工具,可以實現對傳統的tensorboard中 scalar,image,figure,histogram,audio,text,graph,onnx_graph等事件進行編寫。
tensorboardX同時具有論壇供大家提出問題解決問題 ,論壇地址:https://github.com/lanpa/tensorboardX/wiki
它的支持性是比較好的
2. tensorboardX的使用
tensorboardX的安裝以及依賴如下所示:
pip install tensorboard
pip install tensorflow
pip install tensorboardX
tensorboardX的路徑下帶的有一個規范的demo,可以供大家參考。我這里公布一個我自己測試過的代碼,代碼來源於:https://blog.csdn.net/sunqiande88/article/details/80155925
import torch
import torch.nn as nn
from tensorboardX import SummaryWriter
class LeNet(nn.Module):
def __init__(self):
super(LeNet, self).__init__()
self.conv1 = nn.Sequential( #input_size=(1*28*28)
nn.Conv2d(1, 6, 5, 1, 2),
nn.ReLU(), #(6*28*28)
nn.MaxPool2d(kernel_size=2, stride=2), #output_size=(6*14*14)
)
self.conv2 = nn.Sequential(
nn.Conv2d(6, 16, 5),
nn.ReLU(), #(16*10*10)
nn.MaxPool2d(2, 2) #output_size=(16*5*5)
)
self.fc1 = nn.Sequential(
nn.Linear(16 * 5 * 5, 120),
nn.ReLU()
)
self.fc2 = nn.Sequential(
nn.Linear(120, 84),
nn.ReLU()
)
self.fc3 = nn.Linear(84, 10)
# 定義前向傳播過程,輸入為x
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
# nn.Linear()的輸入輸出都是維度為一的值,所以要把多維度的tensor展平成一維
x = x.view(x.size()[0], -1)
x = self.fc1(x)
x = self.fc2(x)
x = self.fc3(x)
return x
dummy_input = torch.rand(13, 1, 28, 28) #假設輸入13張1*28*28的圖片
model = LeNet()
with SummaryWriter(comment='LeNet') as w:
w.add_graph(model, (dummy_input, ))
運行該代碼后會自動生成一個runs文件夾,並且在文件夾下會有一個對應的event,如下圖所示:
此時需要在terminal或者cmd下運行tensorboard --logdir = path
此處千萬要注意,如果按照上面的參考文檔的方式是會報錯的:No graph definition files were found 或者 No definition files were found,總之無法正常顯示網絡結構圖。
此處的path 是event對應的確切,完整的路徑
在運行后會出現一個http url,此時需要將該url 拷貝到chrome下即可看到如下所示框圖
結構框圖如下所示:
此時雙擊紅圈所示的LeNet模塊即可看到LeNet的細節信息,如下所示:
至此即可完成使用tensorboardX 對pytorch網絡結構的可視化
————————————————
版權聲明:本文為CSDN博主「xiaoxifei」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/xiaoxifei/article/details/82735355