赞
踩
参考资料: 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
需要在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{:});
卒
P.S. 听说可以将 PyTorch 转换成 MATLAB代码 ↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。