如何使用timeline profile tensorflow 程序

9人阅读 评论(0) 收藏 举报
分类:

https://blog.csdn.net/Scotthuang1989/article/details/77601458

和其他的程序一样,tensorflow也有两类问题 
* 功能问题:这类问题适合用tfdbg来调试,如果问题出在graph之外,那么就是一个简单的python程序了,直接上pdb, 或者打log 
* 性能问题:这类使用timeline, 同样如果是graph之外,那么使用cPrfile, line_profile就好了。

如何添加代码

  • 生成RunMetaData
run_metadata = tf.RunMetadata()
_, l, lr, predictions = sess.run(
            [optimizer, loss, learning_rate, train_prediction],
            feed_dict=feed_dict,
            options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE),
            run_metadata=run_metadata)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 生成Trace
from tensorflow.python.client import timeline
trace = timeline.Timeline(step_stats=run_metadata.step_stats)
  • 1
  • 2
  • 写入Trace到JSON文件
trace_file = open('timeline.ctf.json', 'w')
trace_file.write(trace.generate_chrome_trace_format())
  • 1
  • 2

如何查看结果

打开chrome, 进到这个页面: chrome://tracing, 然后load刚刚生成的JSON文件就可以了。效果如下

这里写图片描述

需要注意的地方

  • 你需要把这个库文件 libcupti.so 所处的路径放入到 LD_LIBRARY_PATH环境变量里面才能使用这个功能。一般情况下这个文件在这个目录: /usr/local/cuda/extras/lib64. 如果没有使用这个命令安装 sudo apt-get install libcupti-dev
  • 第一次run的trace会有一样不一样,第一次的时候大概是这样的,所以建议使用100次以后的RunMeataDatade。 
    这里写图片描述

  • JSON文件里面只包含一次的结果, 如果需要合并多次的结果,可以参考这个解决方案tensorflow_profiling

配合line_profiler使用需要注意的地方

有时候我们会怀疑其实耗时间的代码是在graph之外,那么这个时候可以直接使用传统的python方法了,我习惯使用line_profiler分析每行代码消耗的时候,这里有一个地方需要注意: 
因为运行 lin_profiler 是使用的这个命令,这个命令是把你的py文件作为一个模块加载的,但是很多tensorflow 都包含这样的代码, 我采取的方法是不使用 tf.app 的所有功能。这样的话 line_profiler可以正常使用,但是略显麻烦,后续发现了更好的方法再更新。

if __name__ == '__main__':
  tf.app.run()
  • 1
  • 2

代码

我学习这个功能写的代码放在这里profile_tensorflow

查看评论

tensorflow 核心流程剖析 4-- 使用profiler检测神经网络模型的运行性能

tensorflow profiler 主要特性 使用tensorflow profiler举例 高级功能Advisor tensorflow profiler 主要特性 ...
  • kenneth_yu
  • kenneth_yu
  • 2017-08-22 08:33:11
  • 730

汐月教育之理解TensorFlow(五)调试工具

作者:JUDGE_MENT 邮箱:gao19920804@126.com CSDN博客:http://blog.csdn.net/sinat_23137713 最后编辑时间:2017.4.05...
  • sinat_23137713
  • sinat_23137713
  • 2017-04-05 16:31:07
  • 3728

使用用Chrome开发者工具(Timeline、Profiler)做JavaScript性能分析

你的网站正常运转。现在我们来让它运转的更快。网站的性能由页面载入速度和代码执行效率决定。一些服务可以让你的网站载入更快,比如压缩JS和CDN,但是让代码执行的更快你要做的事情。 代码中很小的改动都可...
  • taotao6039
  • taotao6039
  • 2013-10-24 16:25:34
  • 2762

Tensorflow White Paper(一)

很早就想读读tensorflow的白皮书,由于拖延症直到现在才读。 Google分别在2015和2016发布了两份tensorflow白皮书, 内容上应该有所不同吧? 先读15年的。...
  • weixin_35653315
  • weixin_35653315
  • 2017-05-24 11:43:55
  • 850

tensorflow调试tfdbg

环境Windows10,Anaconda3。 错误: curses问题 去这里下载相应的库:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cur...
  • philosophyatmath
  • philosophyatmath
  • 2018-01-25 17:22:00
  • 193

如何优雅地用TensorFlow预测时间序列:TFTS库详细教程

如何用TensorFlow结合LSTM来做时间序列预测其实是一个很老的话题,然而却一直没有得到比较好的解决。如果在Github上搜索“tensorflow time series”,会发现star数最...
  • kwame211
  • kwame211
  • 2017-09-27 09:27:58
  • 676

UE4-蓝图基础:TimeLine

一:概念: 1-:TimeLine:在一定时间内不断执行的一个蓝图节点: 2-:添加一个空白节点: 函数讲解: Play:事件驱动,执行此事件时调用; Play from Start:从头开...
  • tiem_erhu
  • tiem_erhu
  • 2016-09-16 16:40:20
  • 3441

谷歌浏览器的timeline工具的使用

谷歌浏览器Timeline用法详解: 大家都知道,谷歌浏览器自带的相关工具是前端开发人员的利器。 点击F12会弹出一个界面,顶部带有功能的选项卡,其中有几个功能强大,但是相对较为复杂,比如Time...
  • zuoshenglo
  • zuoshenglo
  • 2017-10-13 14:02:43
  • 358

Unity2017中Timeline的简单使用方法

Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体、声音、粒子、动画、特效、自定义Playable以及子Timeline等多种资源进行整合,从而能...
  • beihuanlihe130
  • beihuanlihe130
  • 2018-02-27 22:36:25
  • 665

在Ubuntu系统中用tensorflow跑cnn程序

(仅作备忘)我的电脑是Win10系统,事先计划安装虚拟机virtualbox,但是没成功,所以使用服务器工作,服务器是Ubuntu系统。 一、登陆服务器 首先下载xshell,,登陆账号密码。 ...
  • song_pipi
  • song_pipi
  • 2018-01-12 09:54:19
  • 221
    个人资料
    持之以恒
    等级:
    访问量: 14万+
    积分: 2931
    排名: 1万+
    最新评论