Tensorflow,pytorch查看模型参数,模型可视化

您所在的位置:网站首页 pytorch模型可视化工具 Tensorflow,pytorch查看模型参数,模型可视化

Tensorflow,pytorch查看模型参数,模型可视化

#Tensorflow,pytorch查看模型参数,模型可视化| 来源: 网络整理| 查看: 265

参数结构打印

TensorFlow1.12的打印结构:

for var in tf.trainable_variables():     print("Listing trainable variables ... ")     print(var)

TensorFlow1.12的打印参数:

import tensorflow as tf reader = tf.train.NewCheckpointReader('logs/pre-trained/lasted_model.ckpt') global_variables = reader.get_variable_to_shape_map() for key in global_variables:     print("tensor_name: ", key)     print(reader.get_tensor(key))

pytorch 打印结构:

net = resnet()#实例化网络 print(net) ###pytorch 打印参数: for name, parameters in net.named_parameters():#打印出每一层的参数的大小        print(name, ':', parameters.size()) for param_tensor in net.state_dict():  # 字典的遍历默认是遍历 key,所以param_tensor实际上是键值         print(param_tensor, '\t', net.state_dict()[param_tensor])

python打印到文本中:

f = open('text.txt', 'w') print('abc', file = f, flush=False) f.close()

已经保存模型参数查看

# # #读取参数 import torch import numpy as np import pickle file=open("metadata.pkl","rb") data=pickle.load(file) print(data) file.close() y = torch.load("GKT-Transition-Scheduler.pt") print(y)

参考链接:https://blog.csdn.net/superjunenaruto/article/details/111332349

可视化 tensorflow的模型结构可视化方法:

(1)使用自带的tensorboard(不直观)

(2)使用netron工具打开(.pd 或者是.meta文件)

(3)第三方库CNNGraph(  https://github.com/huachao1001/CNNGraph)

(4)tensorspace.js (这个比较高级,没用过)

(5)高层API中keras的可视化

pytorch的模型结构可视化方法:

(1)使用tensorboardX(不太直观)

(2)使用graphviz加上torchviz (依赖于graphviz和GitHub第三方库torchviz)

(3)使用微软的tensorwatch (只能在jupyter notebook中使用)

(4)使用netron可视化工具(.pt 或者是 .pth 文件)

   (5) Visdom

netron介绍 最近经常会遇到这样的情形,拿到一个开源的预训练模型作测试,想把它转到nccn或mnn平台,但是不知道模型中的输入输出名,这个时候我们自然就想到了用可视化工具画出网络来看一看。而netron就是一个可以支持各种框架的神经网络模型可视化工具。目前支持的框架 根据netron的github(https://github.com/lutzroeder/Netron) 目前netron支持 ONNX (.onnx, .pb, .pbtxt), Keras (.h5, .keras), Core ML (.mlmodel), Caffe (.caffemodel, .prototxt), Caffe2 (predict_net.pb, predict_net.pbtxt), Darknet (.cfg), MXNet (.model, -symbol.json), ncnn (.param) and TensorFlow Lite (.tflite)。 并且实验性支持TorchScript (.pt, .pth), PyTorch (.pt, .pth), Torch (.t7), Arm NN (.armnn), BigDL (.bigdl, .model), Chainer (.npz, .h5), CNTK (.model, .cntk), Deeplearning4j (.zip), MediaPipe (.pbtxt), ML.NET (.zip), MNN (.mnn), OpenVINO (.xml), PaddlePaddle (.zip, model), scikit-learn (.pkl), TensorFlow.js (model.json, .pb) and TensorFlow (.pb, .meta, .pbtxt, .ckpt, .index)。安装使用 #指定清华源安装 pip install netron -i https://pypi.tuna.tsinghua.edu.cn/simple

在预训练的模型文件同一目录下新建一个python文件netrontest.py

import netron modelPath = "你的模型文件名.扩展名" netron.start(modelPath)

在同一目录下打开命令行窗口执行python文件

python netrontest.py

这是会自动打开浏览器到地址http://localhost:8080 显示网络图。此时即可查看输入输出或其中层的信息。

我的模型只保留了相关参数

测试

import torch.nn as nn import torch.nn.functional as F import torch.onnx import netron class model(nn.Module): def __init__(self): super(model, self).__init__() self.block1 = nn.Sequential( nn.Conv2d(64, 64, 3, padding=1, bias=False), nn.BatchNorm2d(64), nn.ReLU(inplace=True), nn.Conv2d(64, 32, 1, bias=False), nn.BatchNorm2d(32), nn.ReLU(inplace=True), nn.Conv2d(32, 64, 3, padding=1, bias=False), nn.BatchNorm2d(64) ) self.conv1 = nn.Conv2d(3, 64, 3, padding=1, bias=False) self.output = nn.Sequential( nn.Conv2d(64, 1, 3, padding=1, bias=True), nn.Sigmoid() ) def forward(self, x): x = self.conv1(x) identity = x x = F.relu(self.block1(x) + identity) x = self.output(x) return x d = torch.rand(1, 3, 416, 416) m = model() o = m(d) onnx_path = "onnx_model_name.onnx" torch.onnx.export(m, d, onnx_path) netron.start(onnx_path)

使用Visdom在 PyTorch 中进行可视化 安装

Visdom的安装很简单,直接使用命令pip install visdom安装即可。 在安装完成后,使用命令 python -m visdom.server 在本地启动服务器,启动后会提示It's Alive! You can navigate to http://localhost:8097 这就说明服务已经可用,我们打开浏览器,输入http://localhost:8097 即可看到页面。

端口8097是默认的端口可以在启动命令后加 -port参数指定端口,常用的参数还有 --hostname,-base_url等

Visdom的服务在启动时会自动下载一些静态文件,这里坑就来了,因为某些无法描述的原因,导致下载会失败,比如类似这样的提示 ERROR:root:Error 404 while downloading https://unpkg.com/[email protected] 就说明静态文件没有下载完全,这样有可能就会打不开或者页面中没有菜单栏,那么需要手动进行下载,这里我打包了一份正常的静态文件,直接复制到Lib\site-packages\visdom中即可。

如果不知道conda的环境目录在哪里,可以使用conda env list 查看

Environments

Environments的作用是对可视化区域进行分区,每个用户都会有一个叫做main的默认分区,如图所示:  在程序指定的情况下,默认的图表都会放到这里面

Panes

Panes是作为每一个可视化图表的容器,可以使用生成的图表,图片,文本进行填充,我们可以对Panes进行拖放,删除,调整大小和销毁等操作:  Panes和Environments是一对多的关系,即一个Environments可以包含多个Panes

VIEW

在对Panes进行调整后,可以通过VIEW对状态进行管理

这里我们使用官方的DEMO来做样例

env = Visdom() assert env.check_connection() #测试一下链接,链接错误的话会报错

这里生成sin和cos两条曲线数据

Y = np.linspace(0, 2 * math.pi, 70) X = np.column_stack((np.sin(Y), np.cos(Y)))

使用茎叶图展示

env.stem( X=X, Y=Y, opts=dict(legend=['Sine', 'Cosine']) )

可以通过env参数指定Environments,如果名称包含了下划线_那么visdom会跟根据下划线分割并自动分组

envtest = Visdom(env='test_mesh') assert envtest.check_connection()

生成一个网格图

x = [0, 0, 1, 1, 0, 0, 1, 1] y = [0, 1, 1, 0, 0, 1, 1, 0] z = [0, 0, 0, 0, 1, 1, 1, 1] X = np.c_[x, y, z] i = [7, 0, 0, 0, 4, 4, 6, 6, 4, 0, 3, 2] j = [3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3] k = [0, 7, 2, 3, 6, 7, 1, 1, 5, 5, 7, 6] Y = np.c_[i, j, k] envtessh(X=X, Y=Y, opts=dict(opacity=0.5))

使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 安装

首先需要安装tensorboard

pip install tensorboard

~~ 然后再安装tensorboardx ~~

~~ pip install tensorboardx ~~

pytorch 1.1以后的版本内置了SummaryWriter 函数,所以不需要再安装tensorboardx了

安装完成后与 visdom一样执行独立的命令 tensorboard --logdir logs 即可启动,默认的端口是 6006,在浏览器中打开 http://localhost:6006/ 即可看到web页面。

前三种详见pytorch 网络结构可视化方法汇总(三种实现方法详解) - 灰信网(软件开发博客聚合) (freesion.com)

https://blog.csdn.net/helei001/article/details/51842531

PyTorch 47.使用netron工具可视化pytorch模型 - 知乎 (zhihu.com) https://www.jianshu.com/p/2d1291d69a54

visdom - PyTorch 中文手册 (pytorchbook.cn)

未完待续



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3