Tensorflow:根据变量名获取由placeholder方式传入的变量值

用tf训练,一些变量值是后来传入的,在建立model的时候用placeholder占位。

而这些变量在运行过程中会进行一些处理,从而产生一些中间变量。

很多时候这些中间变量在各种函数中嵌套很深,不会被返回出来,而tf又不能随意输出变量值。但有时我希望能得到并输出这些中间值。

那么可以通过什么方法输出这些中间值呢?


思路就是:
获取变量,然后输出变量。

模型设置如下:

a= tf.placeholder(
   shape=(None, None, None), dtype=tf.int32, name="a")
b= tf.placeholder(
   shape=(None, None), dtype=tf.bool, name="b")

假如我有一个中间变量,经过了很多层函数,并不容易返回,它是通过变量ab运算/变换得到的:

output= tf.tile(tf.expand_dims(tf.logical_not(a), -1), [1, 1, tf.shape(b)[-1]])
# 并不用管具体运算方式 只是举个例子

首先我们可以直接print看看:

print("output", output)

输出结果:
在这里插入图片描述
显然不能得到具体的值,但我们可以得到它在tf中的变量名,即输出括号中的第一个字段。

也就是说我们可以通过这个变量名获取到这个变量。
在这里插入图片描述

接下来设置一下feed数据设置:

feed_dict = {
    a: a,
    b: b,
    c: c,
}

最后通过以下方式即可输出该变量值:

session = tf.Session()
print(session.run('sender_aware_encoding/Select:0',feed_dict=feed_dict))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值