【发布时间】:2019-05-21 23:02:03
【问题描述】:
我正在练习名为 concatenate 的 keras 方法。
在这个例子中使用 with 语句让我想到了这个语句的目的
示例代码如下:
import numpy as np
import keras.backend as K
import tensorflow as tf
t1 = K.variable(np.array([ [[1, 2], [2, 3]], [[4, 4], [5, 3]]]))
t2 = K.variable(np.array([[[7, 4], [8, 4]], [[2, 10], [15, 11]]]))
d0 = K.concatenate([t1 , t2] , axis=-2)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(d0))
然后我检查来自:tensorflow 的文档 并说:
会话可能拥有资源,例如 tf.Variable、tf.QueueBase 和 tf.ReaderBase。当不再需要这些资源时,释放这些资源很重要。为此,请在会话上调用 tf.Session.close 方法,或将会话用作上下文管理器。
我相信已经解释了所有这一切,但是谁能给我更直观的解释。
提前致谢,祝您有美好的一天!
【问题讨论】:
-
我不确定还有什么更直观的。关键是,就像打开使用资源的文件一样,您需要记住最后再次关闭它们。通过将您的代码缩进到
with块内,“关闭”部分就为您覆盖了所有内容。一旦你离开那个缩进级别,一切都会自动为你拆除,所有资源都会被释放。 -
一个荒谬的比喻是离开房间时记得关灯。现在您不必这样做,
with上下文管理器会为您完成 :) -
@roganjosh 但即使我们离开街区,t1、t2 和 d0 也没有发生任何事情,对吧?
标签: python tensorflow with-statement