参考资料: https://www.freesion.com/article/340667237/
GitHub: https://github.com/lutzroeder/netron
不同平台的安装包下载地址:https://github.com/lutzroeder/netron/releases/tag/v4.9.5。
(1)可以在macOS、Linux、Windows等主流操作系统上运行,还有网页版(http://netron.app)。
(2)支持多种主流的深度学习框架,比如ONNX、Keras、Tensorflow Lite、Caffe/Caffe2、Darknet、MNN、ncnn、PaddlePaddle等;对于Tensorflow、Pytorch等框架正在适配中,有测试版本可用。
.pth
文件import torch
torch.save(net, "my_model.pth") # 这里的net即为你的网络
my_model.pth
后即可看到成品坑: 光有结构, 没有标识箭头
.onnx
文件torch.onnx.export(net, train_x, "res.onnx", export_params=True, verbose=True, training=False)
res.onnx
后即可看到成品坑: 结构有, 箭头有, 标识错误
.pt
文件, 下面两个都可以用, 都试一下.traced_script_module = torch.jit.trace(net,train_x)
# 保存模型
traced_script_module.save("model-script.pt")
traced_script_module = torch.jit.script(net)
# 保存模型
traced_script_module.save("model-script2.pt")
model-script.pt
或 model-script2.pt
后即可看到成品先去 graphviz 官网 下载安装包安装
然后安装这两个依赖包:
pip install graphviz # 安装graphviz
pip install git+https://github.com/szagoruyko/pytorchviz # 通过git安装torchviz
import torch
from torchvision.models import AlexNet
from torchviz import make_dot
x=torch.rand(8,3,256,512)
model=AlexNet()
y=model(x)
g = make_dot(y)
g = make_dot(y, params=dict(model.named_parameters()))
g = make_dot(y, params=dict(list(model.named_parameters()) + [('x', x)]))
# g.view() # 会生成一个 Digraph.gv.pdf 的PDF文件 (文件名固定)
g.render('espnet_model', view=False) # 会自动保存为一个 espnet.pdf,第二个参数为True,则会自动打开该PDF文件,为False则不打开
参考资料: https://zhuanlan.zhihu.com/p/148896017
GitHub: https://github.com/martisak/dotnets
# Inspired by
# https://tgmstat.wordpress.com/2013/06/12/draw-neural-network-diagrams-graphviz/
# UPDATE HISTORY
# April, 2018 - 2to3 - Madhavun Candadai
# layers = [3, 5, 5, 5, 2]
layers = [3, 6, 6, 2]
hidden_len = 2
layers_str = ["Input"] + ["Hidden"] * hidden_len + ["Output"]
layers_col = ["none"] + ["none"] * hidden_len + ["none"]
layers_fill = ["black"] + ["gray"] * hidden_len + ["black"]
penwidth = 15
font = "Cambria 10"
print("digraph G {")
# print("\tfontname = \"{}\"".format(font))
print("\trankdir=LR")
print("\tsplines=line")
print("\tnodesep=.08;")
print("\tranksep=1;")
print("\tedge [color=black, arrowsize=.5];")
print("\tnode [fixedsize=true,label=\"\",style=filled," + \
"color=none,fillcolor=gray,shape=circle]\n")
# Clusters
for i in range(0, len(layers)):
print(("\tsubgraph cluster_{} {{".format(i)))
print(("\t\tcolor={};".format(layers_col[i])))
print(("\t\tnode [style=filled, color=white, penwidth={},"
"fillcolor={} shape=circle];".format(
penwidth,
layers_fill[i])))
print(("\t\t"), end=' ')
for a in range(layers[i]):
print("l{}{} ".format(i + 1, a), end=' ')
print(";")
print(("\t\tlabel = {};".format(layers_str[i])))
print("\t}\n")
# Nodes
for i in range(1, len(layers)):
for a in range(layers[i - 1]):
for b in range(layers[i]):
print("\tl{}{} -> l{}{}".format(i, a, i + 1, b))
print("}")
生成 pdf 的命令:
python dotnets.py | dot -Tpdf > test.pdf
http://alexlenail.me/
需要在PyTorch上将神经网络模型转成.onnx文件
然后再用matlab导入
遂使用此脚本
modelfile = 'res.onnx';
classes = ["neg" "pos"];
net = importONNXNetwork(modelfile,'OutputLayerType','classification','Classes',classes)
然而报错
错误使用 importONNXNetwork (第 47 行)
importONNXNetwork 需要 Deep Learning Toolbox Converter for ONNX Model Format 支持包。要安装此支持包,请使用附加功能资源管理
器。
点击下载时,提示登录邮箱(我用的matlab是破解版)。没办法,抱着试一试的心态注册了一个号,结果是顺利将额外的包安上了。
再次输入代码,报错:
错误使用 nnet.internal.cnn.onnx.translateONNX>createInputLayer (第 440 行)
Only image inputs are supported for import.
出错 nnet.internal.cnn.onnx.translateONNX (第 58 行)
inputLayer = createInputLayer(thisGraph, inputsWithoutInitializers{i}, UserImageInputSize);
出错 nnet.internal.cnn.onnx.importONNXNetwork (第 11 行)
[LayersOrGraph, translationIssues] = nnet.internal.cnn.onnx.translateONNX(modelProto, OutputLayerType,
UserImageInputSize, true);
出错 importONNXNetwork (第 52 行)
Network = nnet.internal.cnn.onnx.importONNXNetwork(modelfile, varargin{:});
https://ww2.mathworks.cn/matlabcentral/answers/501080-error-loading-onnx-model-exported-from-pytorch-to-matlab
卒
P.S. 听说可以将 PyTorch 转换成 MATLAB代码 ↓
https://github.com/albanie/mcnPyTorch