tf.get_session_handle tf.get_session_tensor tf.delete_session_tensor

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

猜你喜欢

转载自blog.csdn.net/lssc4205/article/details/87895592