写在前面:

上周微调一个文本检测模型seglink,将特征提取层进行冻结,只训练分类回归层,然而查看tensorboard发现里面有histogram显示模型各个参数分布,看了目前这个训练模型参数分布压根就看不懂,很想知道我的预训练模型的参数分布是怎么个情况,训练了一天了,模型的参数分布较预训练的模型参数有啥变化没有,怎么办呢?

利用tf.summary将模型参数分布在tensorboard可视化:

导入需要的库  设置模型文件夹路径

 import TensorFlow as tf
from tensorflow.python import pywrap_tensorflow
model_dir="___"

定义可视化方法

1、获取ckpt路径,这里的路径是checkpoint文件中的路径(ckpt文件夹中包括:checkpoint文件,index,meta,data四个文件)

code:

ckpt=tf.train.get_checkpoint_state(model_dir)
ckpt_path=ckpt.model_checkpoint_path

2、读取checkpoint 文件中模型的变量名和变量值

这里是使用get_variable_to_shape_map()获取了一个[key:name of variable      value:the shape of variable]的list

code:

reader=pywrap_tensorflow.NewCheckpointReader(ckpt_path)
param_dict=reader.get_variable_to_shape_map()

3、开一个session,

code:

with tf.Session() as sess:
validate_writer=tf.summary.FileWriter('./run')
for key in param_dict:
if(key.startwith('vgg')):
vgg_summary=tf.summary.histogram(key,reader.get_tensor(key))
merge_summary=tf.summary.merge([vgg_summary])#这里可以添加其他需要merge的summary项,如果只有一个summary也可以不用merge,
test_summary=sess.run(merge_summary)
validate_writer.add_summary(test_summary)

tf.summary.FileWriter(event_dir_path)#event_dir_path为事件日志文件夹,运行程序之后会在该指定的文件夹中生产events文件。运行TensorFlow计算后,会将各类数据汇总记录进该日志文件,tensorboard会读取这些数据进行解析并生成数据可视化的web页面。

key.startwith('vgg')在param_dict字典中提取以vgg开头的key,并获取相关tensor以histogram的形式汇总

merge_summary=tf.summary.merge([.....])合并指定数据汇总

test_summary=sess.run(merge_summary)执行一步run,得到merge_summary,并将该summary

validate_writer.add_summary(test_summary)#将当前一步run得到的summary加入之前设置的validate_writer

附上summary示意图帮助理解,图片引用自CSDN网址:https://blog.csdn.net/hongxue8888/article/details/78610305

最后还要关闭writer

validate_writer.close()

运行代码之后,执行如下指令:

tensorboard --logdir="./run"#就是之前设置的events日志文件夹的路径

然后根据执行结果上的网址,打开浏览器即可观察模型参数分部情况:

附一张参数分布图,具体怎么研究比较这个直方图,接下去再研究吧~

小白一枚,进步很慢,希望各路大神道友指教和批评~~~~

利用tensorboard可视化checkpoint模型文件参数分布的更多相关文章

  1. 【猫狗数据集】利用tensorboard可视化训练和测试过程

    数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...

  2. 利用Tensorboard可视化模型、数据和训练过程

    在60分钟闪电战中,我们像你展示了如何加载数据,通过为我们定义的nn.Module的子类的model提供数据,在训练集上训练模型,在测试集上测试模型.为了了解发生了什么,我们在模型训练时打印了一些统计 ...

  3. 利用libsvm-mat建立分类模型model参数解密[zz from faruto]

    本帖子主要就是讲解利用libsvm-mat工具箱建立分类(回归模型)后,得到的模型model里面参数的意义都是神马?以及如果通过model得到相应模型的表达式,这里主要以分类问题为例子. 测试数据使用 ...

  4. 模型文件(checkpoint)对模型参数的储存与恢复

    1.  模型参数的保存: import tensorflow as tfw=tf.Variable(0.0,name='graph_w')ww=tf.Variable(tf.random_normal ...

  5. 学习TensorFlow,TensorBoard可视化网络结构和参数

    在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...

  6. tensorflow打印pb、ckpt模型的参数以及在tensorboard里显示图结构

    打印pb模型参数及可视化结构import tensorflow as tf from tensorflow.python.framework import graph_util tf.reset_de ...

  7. 使用 TensorBoard 可视化模型、数据和训练

    使用 TensorBoard 可视化模型.数据和训练 在 60 Minutes Blitz 中,我们展示了如何加载数据,并把数据送到我们继承 nn.Module 类的模型,在训练数据上训练模型,并在测 ...

  8. TensorFlow2.0(9):TensorBoard可视化

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  9. Tensorflow学习笔记3:TensorBoard可视化学习

    TensorBoard简介 Tensorflow发布包中提供了TensorBoard,用于展示Tensorflow任务在计算过程中的Graph.定量指标图以及附加数据.大致的效果如下所示, Tenso ...

随机推荐

  1. C# 反射的详细理解

    网友A的解释: C# 反射机制的学习心得   首先说说,为什么要学习 反射 呢?有什么用啊. 在我们写程序的时候,经常会用到一些类中的方法,那么就要调用这些个类.如果不是在一个命名空间里时,就要引用相 ...

  2. 1.为什么会有Servlet?它解决了什么问题?

    1. 为什么会出现Servlet? 因为web服务器(tomcat.Weblogic.iis.apache)没有处理动态资源请求的能力(即该请求需要计算),只能处理静态资源的请求(如果浏览器请求某个h ...

  3. web项目超时方案

    1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...

  4. ~~Python文件简单操作~~

    进击のpython Python文件操作 在说Python的文件操作之前 我们可以先思考一个问题 平时我们是怎么对电脑中的文件进行操作的呢? 打开电脑⇨找到文件⇨打开文件⇨读文件⇨修改文件⇨保存文件⇨ ...

  5. C语言指针专题——如何理解指针

    本文为原创,欢迎转发! 最近在研读C primer plus 5版中文版,老外写的,还是很经典的,推荐给读者们,有需要的朋友可以在这里购买:C primer plus 5版中文版 指针,传说中是C语言 ...

  6. WinForm控件之【ListBox】

    基本介绍 列表控件,将一个或多个数据项列表展示供选择处理. 常设置属性 DataSource:绑定加载项的数据源,设置属性DisplayMember绑定需要显示字段名: ColumnWidth:当属性 ...

  7. SSAS多维设计模型与报表客户端-Excel透视表制作

    VS:SSAS设计多维设计模型: 数据源视图.dsv: 数据源视图表,名称命名规范:vw_表名(事实表_F_/维表_D_),

  8. c语言进阶9-值传递与地址传递

    一.  函数的值传递 函数的值传递是指参数为基本类型时,如整型.浮点型.字符型(特指单字符型)时,参数传递时是从实参拷贝一份值传给形参,形参的变化不会影响实参的值. 1.        基本类型做参数 ...

  9. Netty中的装饰者模式

    装饰者的应用 所谓装饰者,说白了,目的就是对现有的对象进行增强,装饰者设计模式最大的优点就是,它在扩展类原有功能的基础上还避免的类爆炸的情况 Netty中的装饰者模式的应用 ByteBuf是netty ...

  10. python课堂整理12---递归

    一.递归特性 1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据 ...