用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))