Tensorflow调试指南:tf.Print

9 篇文章 0 订阅
2 篇文章 0 订阅

TL;DR

tf.Print(input,data)

a=tf.Print(a,["value",a,"shape",tf.shape(a)])

tensor a可以定义在代码的任意一个位置,只要在session.run时节点a有数据流过(否则你也不会想要debug它),data就会被打印到终端。

Code

import tensorflow as tf

def _test_():
    with tf.variable_scope('ts'):
        a=tf.constant(1)
        a=tf.Print(a,["value",a,"shape",tf.shape(a)])
    return a
import tensorflow as tf
from TryDebug import _test_
if __name__ == '__main__':
    with tf.Session() as sess:
        print(sess.run(_test_()))

Play with it!

Some Detail

  1. 信息被打印到标准错误流,而非标准输出流,在pycharm里,前者红色,后者白色
    在这里插入图片描述
  2. tf.Print是一个tensor操作,这意味着他也会在图上添加一个节点,这个节点的功能和tf.identity类似,仅传递数据,打印错误输出是它的副作用。
  3. data的输入必须是string或者tensor
  4. 实际上,tf.Print的input和data并不一定匹配,input的作用仅仅是将节点添加到图上,而data可以是任何有数据流过的节点。

Note:这篇文章适用于tensorflow2.0的静态计算图+会话机制,对于2.0新增加的keras模式和动态计算图,我尚未学习,也不确定是否有更好的办法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>