Blog的Github地址:github.com/liuyan731/b…


最近上线了一个图片分类的机器学习Python服务,但是在线上的性能并不是特别好,就开始进行痛苦的性能分析。今天分享一个简单但是非常实用的Tensorflow性能调优工具Timeline。

简介

Tensorflow的Timeline模块是用于描述张量图一个工具,可以记录在会话中每个操作执行时间和资源分配及消耗的情况。

使用方法

执行代码sess.run()加入参数options和run_metadata

sess.run() 加入 option和run_metadata参数,然后创建timeline对象,并写入到timeline.json文件中

import tensorflow as tf
from tensorflow.python.client import timelinerun_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()predictions = use_sess.run(use_out, {'DecodeJpeg/contents:0': image_file.file.getvalue()}, options=run_options, run_metadata=run_metadata)# Create the Timeline object, and write it to a json
tl = timeline.Timeline(run_metadata.step_stats)
ctf = tl.generate_chrome_trace_format()
with open('timeline.json', 'w') as f:f.write(ctf)复制代码

查看timeline对象

打开Google Chrome,转到该页面 chrome://tracing并加载该timeline.json文件。在该页面上可以每个操作的耗时,以及op的详细信息。

chrome 加载timeline.json文件后展示的运行图


2018/4/22 done

此文章也同步至个人Github博客

转载于:https://juejin.im/post/5adc95eb6fb9a07aa9255075

Tensorflow Timeline介绍及简单使用相关推荐

  1. Python黑马头条推荐系统第四天 TensorFlow框架介绍和深度学习

    深度学习与推荐系统 6.1 推荐系统与深度学习关联 学习目标 目标 无 应用 无 6.1.1 深度学习到推荐系统 深度学习发展成功与局限 最近几年深度学习的流行,大家一般认为是从2012年 AlexN ...

  2. Matplotlib的介绍及简单操作

    Matplotlib的介绍及简单操作 1 什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进.交互式方式实现数据可视化 2 为什么要学习Matplotlib 可视化是在整个数据 ...

  3. (三)AJAX基本介绍和简单实例03

    (三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...

  4. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  5. Protobuf介绍及简单使用(上)

    目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...

  6. SQL Server中追踪器Trace的介绍和简单使用

    原文:SQL Server中追踪器Trace的介绍和简单使用 一.What is Trace? 对于SQL Profiler这个工具相信大家都不是很陌生,没用过的朋友可以在SQL Server Man ...

  7. S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...

  8. 新颖的自我介绍_简单新颖的自我介绍范文

    简单新颖的自我介绍范文 简单新颖的自我介绍范文1 各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸.希望通过这次面试能够把自己展示给大家,希望大家记住我.我叫.... ...

  9. Quartz框架实现定时任务介绍及简单使用

    https://blog.csdn.net/bicheng4769/article/details/81097305 Quartz框架介绍及简单使用 https://www.cnblogs.com/d ...

最新文章

  1. 基于Struts2.3.x+Spring3.2.x+Hibernate4.2.x+EasyUI1.3.4+Maven架构的示例程序
  2. web主题公园版权信息破解:script.js加密文件
  3. SAP CRM系统订单模型的设计与实现 1
  4. ArcGIS API for Silverlight开发入门准备
  5. AndroidStuido连接不上手机的解决方法
  6. 局网满猿关不住,一波码农出墙来。
  7. Google 搜索命令
  8. 2年乘坐南航2次,却攒了48000里程,我是怎样做到的?(2)
  9. Oracle RMAN 的 show,list,crosscheck,delete命令整理
  10. python做网站开发_如何用Python做网站开发
  11. python翻转棋_奥赛罗棋reverse
  12. 杂谈:奇点真的临近吗?兼聊AI、区块链、类脑计算、量子计算等
  13. 【Android Audio】dumpsys audio分析【不定期更新文章】
  14. 来看看移动端小程序技术的前世今生!小白也能看明白
  15. 【106页报告】深度分析“柒”“捌”“玖”“零”后的互联网世界!
  16. java学习--基础知识进阶第十天--标准输入流 转换流 打印流、对象操作流 、Properties集合...
  17. DFT,IDFT,FFT,IFFT算法的C++实现
  18. 全款买房划算,还是贷款划算?
  19. 快速入门运维:成为一名高效运维工程师的关键步骤
  20. PTZ摄像机中PTZ分别代表什么?

热门文章

  1. 让hover效果平滑过渡回初始状态?
  2. php sql 字段不能为空值,关于php:Sudden SQL问题-一般错误:1364字段没有默认值
  3. java自学难点_学习JAVA遇到的难点总结
  4. Node.js路径操作
  5. 计算机程序C语言若初始数为48,2016年计算机软考程序员模拟选择试题
  6. php后端路由,laravel实现前后台路由分离的方法
  7. mysql 字段存文件_使用数据库(mysql)字段保存文件
  8. java堆外内存为何比java堆更适合用来进行网络IO操作
  9. vb如何用代码对Excel的指定区域实行保护
  10. 怎样用VB获得Windows各类系统目录