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

2023-05-16

参数结构打印


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/layout-bin-packer@1.4.0 就说明静态文件没有下载完全,这样有可能就会打不开或者页面中没有菜单栏,那么需要手动进行下载,这里我打包了一份正常的静态文件,直接复制到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]
envtest.mesh(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)

未完待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow,pytorch查看模型参数,模型可视化 的相关文章

随机推荐

  • 图和图的基本知识

    1 1 图的表示 1 2 图的特性 子图Subgraph 连通分量Connected Component 接通图Connected Graph 最短路径Shortest Path 图直径Diameter 1 3 图中心性 Centralit
  • BFS和DFS的python实现(要记住)

    BFS DFS python模板与实现 BFS模板 1 无需分层遍历 while queue 不空 xff1a cur 61 queue pop for 节点 in cur的所有相邻节点 xff1a if 该节点有效且未访问过 xff1a
  • BFS与 DFS题目练习(python)

    107 二叉树的层序遍历 II 难度中等423 给定一个二叉树 xff0c 返回其节点值自底向上的层序遍历 xff08 即按从叶子节点所在层到根节点所在的层 xff0c 逐层从左向右遍历 xff09 例如 xff1a 给定二叉树 3 9 2
  • LeetCode每日一题-合并两个有序数组

    88 合并两个有序数组 难度简单878 给你两个有序整数数组 nums1 和 nums2 xff0c 请你将 nums2 合并到 nums1 中 xff0c 使 nums1 成为一个有序数组 初始化 nums1 和 nums2 的元素数量分
  • debian 系统无声音

    系统识别了硬件 xff0c 加载了内核 可是就是没声音 在基础条件都满足的情况下 xff0c 尝试输入 xff1a sudo alsactl init 反正我是一输入声音就出来了 转载于 https my oschina net skyoo
  • 爬虫实战-爬取房天下网站全国所有城市的新房和二手房信息(最新)

    看到https www cnblogs com derek1184405959 p 9446544 html项目 xff1a 爬取房天下网站全国所有城市的新房和二手房信息和其他博客的代码 xff0c 因为网站的更新或者其他原因都不能正确爬取
  • pytorch 模型保存与加载 cpu转GPU

    model eval 的重要性 在2 中最后用到了model eval 是因为 只有在执行该命令后 34 dropout层 34 及 34 batch normalization层 34 才会进入 evalution 模态 而在 34 训练
  • 数据分析及数据分析的工作流程

    1 什么是数据分析 数据分析是根据业务问题 xff0c 对数据进行收集 xff0c 清洗 xff0c 处理和建模的过程 xff0c 用于识别有助于业务的信息 xff0c 获取关键业务结论并辅助决策 界定业务问题 xff08 以宜家为例 xf
  • SQL练习网站

    之前上过数据库的课程 xff0c 但感觉零零散散 xff0c 现在已经不记得多少 xff0c 一方面是没有总结另一方面是没有练习 https sqlbolt com 但感觉网页加载的很慢 但我发现以上两者结合起来棒棒哒 有中文 xff0c
  • SQL入门(二)查询执行顺序

    完整查询 SELECT DISTINCT column AGG FUNC column or expression FROM mytable JOIN another table ON mytable column 61 another t
  • SQL入门之基本语法

    下面是为了方便查考在GitHub上找到的一个教程 目录 开始使用 登录MySQL创建数据库创建数据库表增删改查 SELECTUPDATEINSERTDELETEWHEREAND 和 OR ANDORORDER BYINNOTUNIONASJ
  • python有向图,无向图绘制

    https www jianshu com p 52bb142314ebR语言画网络图 https blog csdn net fly hawk article details 78513257 python绘制无向图 xff0c 输入数据
  • 知识追踪待解决问题记录-交流贴

    记录遇到知识追踪的问题 xff0c 欢迎大家进行留言交流 1 DKT中的图如何画的 好像是根据这个公式 但还没画出来 2 GKT跑的效果很差 可能原因是作者对数据的特殊处理 xff0c 作者的实验数据好像不是assistment的 后面有人
  • conda安装包遇到问题An unexpected error has occurred. Conda has prepared the above report.

    之前还没问题 xff0c 现在就 base C Users wei gt conda activate tensoflow1 tensoflow1 C Users wei gt conda install seaborn Collectin
  • Requests库爬取实例

    网络爬虫的盗亦有道 网络爬虫的尺寸 爬取网页 xff0c 玩转网页 xff1a 小规模 xff0c 数据量小 xff0c 爬取速度不敏感 xff1b Requests库 爬取网站 爬取系列网站 xff1a 中规模 xff0c 数据量较大 x
  • Java8两个集合(List)取交集、并集、差集、去重并集

    Java8两个集合 List 取交集 并集 差集 去重并集 java guava 集合的操作 xff1a 交集 差集 并集 span class token keyword import span span class token name
  • XML,JSON,YAML

    信息标记的三种形式 信息的标记 xff1a 标记后的信息可形成信息组织结构 xff0c 增加了信息维度 标记后的信息可用于通信 存储和展示 标记的结构与信息一样具有重要价值标记后的信息有利于程序理解和运用 HTML的信息标记 xff1a H
  • python爬虫 2021中国大学排名定向爬虫

    最近的几篇博客来源是之前我下载的一个课件 在网上搜索了一下是一下这个课程的 xff0c 可以结合视频博客以及代码去更好地学习 Python网络爬虫与信息提取 北京理工大学 中国大学MOOC 慕课 icourse163 org 但是课程内容的
  • 爬虫小案例之爬取京东商品链接

    观察URL翻页的变化 爬取页面URL如下 base url 61 39 https search jd com Search keyword 61 39 43 keyword for x in range 1 num 43 1 url 61
  • Tensorflow,pytorch查看模型参数,模型可视化

    参数结构打印 TensorFlow1 12的打印结构 xff1a for var in tf trainable variables print 34 Listing trainable variables 34 print var Ten