Keras 中的 tensorflow 会话在哪里
Posted
技术标签:
【中文标题】Keras 中的 tensorflow 会话在哪里【英文标题】:Where is the tensorflow session in Keras 【发布时间】:2019-05-08 06:17:33 【问题描述】:我是 keras 和 tensorflow 的新手。 当我用 tensorflow 编写程序时,我必须建立一个会话来运行图表。但是,我在使用keras的时候,虽然后端明显是tensorflow,但是在keras代码中并没有看到session。似乎一切都是在model.compile和model.fit之后完成的。
那么,Keras 是如何工作的?张量流会话在哪里?而不是会话,我可以使用 keras 的急切执行吗?
在此先感谢,对不起我的英语
【问题讨论】:
【参考方案1】:Keras 没有直接的会话,因为它支持多个后端。假设您使用 TF 作为后端,您可以获得全局会话:
from keras import backend as K
sess = K.get_session()
另一方面,如果你已经有一个打开的 Session
并希望将其设置为 Keras 应该使用的会话,你可以通过以下方式进行:
K.set_session(sess)
【讨论】:
如果我使用tf.Session()
而不是tf.keras.backend.get_session()
会发生什么。既然,我用的是tensorflow.keras
,不应该是一样的吗?还有tf.get_default_session
.
(注意:我们谈论的是 TF 1.X,在 2.X 会话不再存在) tf.Session 创建一个新的 Session 实例,它不会返回 Keras 使用的那个实例.根据 get_default_session,如果您从未更改过 Keras 的会话,它可能会起作用,但不能保证相同
我在使用tf.Session
,在从磁盘加载keras
模型之前,所以tf.keras
不会最终使用那个会话实例吗?另外,您能否解释一下根据 get_default_session,如果您从未更改过 Keras 的会话,它可能会起作用,但不能保证相同
Keras 不会使用您创建的实例吗?我会说可能不会,但我现在不能确定。对于评论的第二部分,在我的回答(下半部分)中,我将向您展示如何将特定会话设置为 Keras 会话。除非您以这种方式手动设置会话,否则 Keras 将使用其默认会话。这是否是“TF”默认会话,我不知道,你必须检查一下
通过我的实验,我看到你说tf.Session()
每次被调用时都会创建一个新会话,tf.keras.backend.get_session()
与此不同,但奇怪的是tf.get_default_session()
返回@987654334 @总是,不明白为什么。以上是关于Keras 中的 tensorflow 会话在哪里的主要内容,如果未能解决你的问题,请参考以下文章
Keras + Tensorflow 和 Python 中的多处理
Keras 中的自定义损失函数 - 遍历 TensorFlow