PyTorch ニューラル ネットワーク モデルの視覚化 (Netron)
Netron は深層学習モデルを視覚化するためのツールであり、モデルの構造とパラメーターをより深く理解するのに役立ちます。
次の形式のモデル ストレージ ファイルがサポートされています。
フォーマット | テンプレート(ファイル) | ダウンロードせずに開く |
---|---|---|
ONNX | スクイーズネット | 開ける |
TensorFlow Lite | ヤムネット | 開ける |
TensorFlow | チェスボット | 開ける |
難しい | モバイルネット | 開ける |
トーチスクリプト | トレース_オンライン_プレド_レイヤー | 開ける |
コアML | エクサモート | 開ける |
ダークネット | ヨロ | 開ける |
GitHub リンク: https://github.com/lutzroeder/netron
公式サイト:https: //netron.app
ONNX
(1) PyTorch では、torch.onnx.export
関数を使用してモデルを ONNX 形式にエクスポートできます。
import torch
import netron
# 定义 PyTorch 模型
class MyModel(torch.nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.conv = torch.nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
self.bn = torch.nn.BatchNorm2d(64)
self.relu = torch.nn.ReLU(inplace=True)
self.pool = torch.nn.MaxPool2d(kernel_size=2, stride=2)
self.fc = torch.nn.Linear(64 * 8 * 8, 10)
def forward(self, x):
x = self.conv(x)
x = self.bn(x)
x = self.relu(x)
x = self.pool(x)
x = x.view(-1, 64 * 8 * 8)
x = self.fc(x)
return x
# 创建模型实例并加载预训练权重
model = MyModel()
# 设置示例输入
input = torch.randn(1, 3, 32, 32)
# 将模型导出为 ONNX 格式
torch.onnx.export(model, input, './model/Test/onnx_model.onnx') # 导出后 netron.start(path) 打开
(2) Netron のコマンドを使用して、netron.start
エクスポートされた ONNX モデル ファイルを開きます。
import netron
# 打开导出的 ONNX 模型文件
netron.start('./model/Test/onnx_model.onnx')
Serving './model/Test/onnx_model.onnx' at http://localhost:8080
Netron ツールがブラウザで自動的に起動し、モデル ファイルが視覚化されます。
知らせ:
モデルを ONNX 形式にエクスポートすると、指定したディレクトリにサフィックス.onnx
が付いた、それをNetron 公式 Web サイトにアップロードして視覚化することもできます。
Netron では、モデルの構造、パラメーター、入力と出力、その他の情報を表示できます。モデルの視覚化は、モデルの構造とパラメーターをより深く理解するために、ズーム、回転、移動によって調整できます。
トーチ.保存
torch.save
保存されたモデルを次のように視覚化する場合:
# 保存模型
torch.save(model.state_dict(), './model/Test/saved_model.pt')
# 可视化
netron.start('./model/Test/saved_model.pt')
次の図に示すように、このメソッドではモデルの詳細情報は表示されません。
Netron は、torch.save
PyTorch によってエクスポートされたモデル ファイルをサポートしていません。
トーチ.jit.スクリプト
torch.jit.script
まずモデルをスクリプトに変換するために使用し、次にtorch.jit.save
モデルを視覚化するために保存します。
# TorchScript:script
scripted_model = torch.jit.script(model)
# 保存模型
torch.jit.save(scripted_model, './model/Test/scripted_model.pth')
# 可视化
netron.start('./model/Test/scripted_model.pth')
トーチ.ジット.トレース
を使用して、torch.jit.trace
最初にモデルをモデルの実行を追跡するツールに変換し、次に を使用してtorch.jit.save
モデルを保存し、最後にそれを視覚化します。
# TorchScript:trace
traced_model = torch.jit.trace(model, torch.randn(1, 3, 32, 32))
# 保存模型
torch.jit.save(traced_model, './model/Test/traced_model.pth')
# 可视化
netron.start('./model/Test/traced_model.pth')