Tensorflow之调试(Debug)及打印变量

 

参考资料:https://wookayin.github.io/tensorflow-talk-debugging

几种常用方法:

1.通过Session.run()获取变量的值

2.利用Tensorboard查看一些可视化统计

3.使用tf.Print()和tf.Assert()打印变量

4.使用Python的debug工具: ipdb, pudb

5.利用tf.py_func()向图中插入自定义的打印代码, tdb

6.使用官方debug工具: tfdbg

复习:

tensorflow是通过先建图再运行的方式进行运行,这就使得我们写在图建立过程中的输出语句在图运行的时候并不能得到执行,从而使得调试困难. 我们想在运行过程中,对训练的一些变量进行追踪和打印,对一些错误进行输出分析,下面介绍几种在tensorflow中进行debug的方法.

详细介绍:

1.通过Session.run()获取变量的值

一个简单的例子:

优点:简单易行

缺点:必须要在图中保持需要观察的变量,必须要进行一次完整的运行

比如我们要获取各个层的输出,会变得很繁琐:

可以通过词典或者新建一个类来改善这一情况:

词典:

类:

2.利用Tensorboard查看一些可视化统计

Tensoboard简单使用方法:http://www.cnblogs.com/huangshiyu13/p/7562990.html

3.使用tf.Print()和tf.Assert()打印变量

一个简单例子:

在前7次迭代中,它会输出预测的label,如下图所示:

缺点:函数过于简单,没法在满足一定条件下进行输出,或者隔多少次迭代才进行一次输出.

这个函数在condition等于False的时候进行输出data的值,并且抛出异常,summarize决定输出多少变量值

使用方法:

或者可以:

或者把所有的Assert操作加入collection:

官方也提供了一些assert相关的函数: https://www.tensorflow.org/versions/r0.12/api_docs/python/check_ops.html#asserts-and-boolean-checks

4.使用Python的debug工具: ipdb, pudb

5.利用tf.py_func()向图中插入自定义的打印代码

简单例子:

另一个例子:

一个第三方debug工具: https://github.com/ericjang/tdb

6.使用官方debug工具: tfdbg

黄世宇/Albert's Personal Page:http://huangshiyu.me/

tf调试函数的更多相关文章

  1. tensorflow 笔记14:tf.expand_dims和tf.squeeze函数

    tf.expand_dims和tf.squeeze函数 一.tf.expand_dims() Function tf.expand_dims(input, axis=None, name=None, ...

  2. TensorFlow随机值:tf.random_normal函数

    tf.random_normal 函数 random_normal( shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=No ...

  3. tf.transpose函数的用法讲解

    tf.transpose函数中文意思是转置,对于低维度的转置问题,很简单,不想讨论,直接转置就好(大家看下面文档,一看就懂). tf.transpose(a, perm=None, name='tra ...

  4. tensorflow中 tf.reduce_mean函数

    tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值. reduce_mean(input_ ...

  5. tf.transpose函数解析

    tf.transpose函数解析 觉得有用的话,欢迎一起讨论相互学习~Follow Me tf.transpose(a, perm = None, name = 'transpose') 解释 将a进 ...

  6. tf.slice函数解析

    tf.slice函数解析 觉得有用的话,欢迎一起讨论相互学习~Follow Me tf.slice(input_, begin, size, name = None) 解释 : 这个函数的作用是从输入 ...

  7. dump调试函数

    //dump调试函数if (!function_exists('dump')) { /* * dump调试函数 */ function dump($var) { $traces = debug_bac ...

  8. tf.random_normal()函数

    tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值. tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf. ...

  9. Spark远程调试函数

    Spark远程调试函数 1.sendInfo 该函数用于分布式程序的调试,非常方便,在spark的rdd操作中嵌入sendInfo,启动nc服务器后,可以收集到所有需要的运行时信息,该函数可以捕获ho ...

随机推荐

  1. DevOps - 与传统方式区别

    章节 DevOps – 为什么 DevOps – 与传统方式区别 DevOps – 优势 DevOps – 不适用 DevOps – 生命周期 DevOps – 与敏捷方法区别 DevOps – 实施 ...

  2. (三)微信小程序配置

    小程序官方文档 全局配置

  3. (分治)输出前m大的数。。。

    描述给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输出.输入第一行包含一个整数n,表示数组的大小.n < 100000.第二行包含n个整数,表示数组的元素,整数之间以一个空格分开 ...

  4. Golang函数-不定参函数

    Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  5. GNS3 模拟Arp命令2

    R1 : conf t int f0/0 no shutdown ip add 192.168.1.1 255.255.255.0 no ip routing end R2 f0/0: conf t ...

  6. Spring课程 Spring入门篇 7-3 advice扩展

    课程链接: 1 解析 1.1 advice中aspect 切面传参 1.2 通知参数名称——argNames属性, 参数为 JoinPoint.ProceedingJoinPoint.JoinPoin ...

  7. NumPy 基于已有数据创建数组

    原文:Python Numpy 教程 章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基 ...

  8. LeetCode刷题(持续更新ing……)

    准备刷题了!已经预见未来的日子是苦并快乐的了!虽然 N 年前刷过题,但现在感觉数据结构与算法的基本功快忘光了

  9. android 开发学习

    androidSDK自带SQLite数据库,使用时继承父类(SQLiteOpenHelper). this表对象本身,理解为指向自身的指针:super(超类)表对象的父类,即指向父类的指针. Cont ...

  10. TX2开发板Ubuntu16.04安装中文输入法

    打开终端输入安装输入法: sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin ...