热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Tensorflow时的爽物之Tensorboard

前期准备Tensorflow(Mac老司机踩坑记录:在Mac上安装Tensorflow的注意点–知乎专栏)一点可以跑的TF代码(https:gist.github.commosho

前期准备

  • Tensorflow(Mac老司机踩坑记录:在Mac上安装Tensorflow的注意点 – 知乎专栏)
  • 一点可以跑的TF代码(https://gist.github.com/moshoujingli/384b8b4e624d4a846fc26c8e5076a9ca)

目的

  • 使用Tensorflow自带的工具进行权重分布查看,网络链接展示,loss随迭代变化曲线。

使用

文章开头提到的代码运行结束后,运行

tensorboard --logdir='./graph'

得到几个可视化页面的截图

显示网络图

《使用Tensorflow时的爽物之Tensorboard》
《使用Tensorflow时的爽物之Tensorboard》 选择一个点进去可以看到细节
《使用Tensorflow时的爽物之Tensorboard》

显示权重分布

《使用Tensorflow时的爽物之Tensorboard》
《使用Tensorflow时的爽物之Tensorboard》

三维显示

《使用Tensorflow时的爽物之Tensorboard》
《使用Tensorflow时的爽物之Tensorboard》

显示loss变化

《使用Tensorflow时的爽物之Tensorboard》
《使用Tensorflow时的爽物之Tensorboard》

用法

老版本的Tensorboard系列API是以tf.xxx_summary这种方法定义的,在1.0版本发布后,summary被定义为operation的一种,因此调用变为:http://tf.summary.xxx , 例如原先的tf.scalar_summary()接口现在为tf.summary.scalar()。

Tensorboard本质上是把运行中信息保存在一个文件夹下,然后用web方式打开进行展示。所以一般的使用方法如下:

def graphDef():
## some other work
## 把一些ops整合到一个name scope下,最后生成的图比较清楚
with tf.name_scope("layer_out"):
w_o = init_weights([64,2], "w_o")
b_o = init_weights([2], "b_o")
py_x = tf.nn.softmax(tf.matmul(ho, w_o) + b_o)
## 定义图的时候存储一些中间结果
tf.summary.histogram('h1/weights',w_2)
tf.summary.scalar('loss',cost)
## summary 也是个op 所以也需要run
writer = tf.summary.FileWriter('./graph',sess.graph)
merged = tf.summary.merge_all()
## 合并定义图时的记录操作,并计算
for i in range(step):
## some other work
result = sess.run(merged, feed_dict={X: batchX, Y: batchY})
## 把计算结果和step绑定(用来画图)
writer.add_summary(result,i)
writer.close()

常用的几个API用法:

# 记录一个tensor,之后产出这个tensor中元素的直方图和分布随迭代次数i之间的关系,支持二级名称
tf.summary.histogram('name/sub_name',weight_tensor)
# 记录一个标量,之后产出这个标量和迭代次数i之间关系的曲线图
tf.summary.scalar('name/sub_name',scalar_val)
# 指定输出文件夹路径以及对应的计算图,之后产出此计算图的图形化展示
writer = tf.summary.FileWriter('./graph',sess.graph)
# 定例搞法,一般在一个循环里操作,i是需要把上面标量和分布去绑定的迭代次数
merged = tf.summary.merge_all()
result = sess.run(merged)
writer.add_summary(result,i)

总结

用Tensorflow搞了个大新闻之后可以考虑用graph来可视化计算图和中间关键值的变化。

如果发现有一些层链接的关系比较恶心,可以考虑用name_scope简化显示,


推荐阅读
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
author-avatar
清新的淡淡茶绿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有