tf.get_session_handle
tf.get_session_handle(
data,
name=None
)
返回作为data的handle,注意data须为tensor
有点抽象,文档里解释的是使用返回的handle,注意必须是sess.run之后返回的handle
在下一次run之前,配合tf.get_session_tensor,可使用data作为输入
tf.get_session_tensor
tf.get_session_tensor(
handle,
dtype,
name=None
)
返回一个placeholder,作为sess.run时的feeding h.handle, 以及handle所指定的tensor
下面的用例(官方没我的解释的清楚)
p1 = tf.placeholder(shape=[1], dtype=tf.int32)
a = tf.multiply(p1, 10)
h = tf.get_session_handle(a)
b = tf.multiply(a, 10)
b, h =sess.run([b, h], feed_dict={p1: [2]})
p, a_ = tf.get_session_tensor(h.handle, dtype=tf.int32)
c = tf.multiply(a_, 10)
sess.run(c, feed_dict={p: h.handle})
输出
array([200])
可以看出来,在第一次run时,p1做了feeding操作,而第二次run时,由于有了handle,可以直接使用之前的结果
运行
sess.run(a_, feed_dict={p: h.handle})
输出
array([20])
可以看出来,第一次run的a值。
总体来说,tf.get_session_handle和tf.get_session_tensor结合使用,可以保存前次那次run时的tensor值,特别是会变化的tensor。
tf.delete_session_tensor
tf.delete_session_tensor(
handle,
name=None
)
把handle指定的tensor进行删除操作,删除之后,tf.get_session_tensor就不再可用,否则会报错
继续上面的例子
p,d_op = tf.delete_session_tensor(h.handle)
sess.run([d_op], feed_dict={p: h.handle})
删除之后,以下会报错
sess.run(c, feed_dict={p: h.handle})