Class 如何将TensorFlow会话用作类属性

Class 如何将TensorFlow会话用作类属性,class,session,tensorflow,Class,Session,Tensorflow,我使用会话作为类的属性,如中所示 self.sess = tf.Session() 或 会话属性用于多个功能,例如 def get_loss(self, input_data): return self.sess.run(self.loss, {self.data:input_data}) 我知道某个会议必须在某个时候结束。当将会话用作类的属性时,这是否也适用?我是否需要“关闭会话”功能?如果是,我应该把它放在课堂上的什么地方 遗憾的是,我在会话中找不到任何类属性,因此我非常

我使用会话作为类的属性,如中所示

self.sess = tf.Session()

会话属性用于多个功能,例如

def get_loss(self, input_data):
        return self.sess.run(self.loss, {self.data:input_data})
我知道某个会议必须在某个时候结束。当将会话用作类的属性时,这是否也适用?我是否需要“关闭会话”功能?如果是,我应该把它放在课堂上的什么地方


遗憾的是,我在会话中找不到任何类属性,因此我非常感谢您的建议。

您应该实现一个调用
self.sess.close()
成员函数。然后像处理
会话一样使用对象:

with MyClass() as myobj:
    ...
编辑(增加详细程度)

关于python的
with
语句,它的有用性以及如何构建兼容的类,有以下几点。它的用途基本上是整洁地处理对象资源的生命周期

使用上下文管理器(通常使用
with
语句处理的对象)作为类的成员函数的一种干净方法是将该类本身作为上下文管理器


如果您只是在对象的成员函数中打开一个
会话
上下文,那么该对象(无论如何,其资源)的有效寿命将以
with
块结束:实际上,该会话对象不是类成员,而只是函数的局部变量。如果要在类的多个成员函数中使用相同的
会话
,则需要将
会话
资源的生存期扩展到单个函数之外,并让类作为上下文管理器来处理这些资源。

我应该在什么时候调用sess.close()函数?
会话.close()当调用
MyClass.close()时,将调用
,如果您遵循上述习惯用法,则在关闭带有
作用域的
时将调用该函数。总之,不要亲自打电话给他们,让scopes来处理。对不起,我还是不确定我是否理解你的意思。当我初始化类的一个实例时,比如instance=MyClass(params),我应该如何将它与作用域一起使用?在您的with作用域中,MyClass.close()是如何自动调用的?您可以提供一个链接,在实践中显示这种构造吗?在初始化类的一个成员之后使用“with instance.session as sess:”是否更有意义?另外,我必须更改类中的所有函数,对吗?现在,如原始帖子所示,一个类返回例如“self.sess.run(self.loss,…”)
with MyClass() as myobj:
    ...