tf.keras.backend.clear_session 实际上做了啥?

Posted

技术标签:

【中文标题】tf.keras.backend.clear_session 实际上做了啥?【英文标题】:What tf.keras.backend.clear_session actually do?tf.keras.backend.clear_session 实际上做了什么? 【发布时间】:2019-08-30 17:48:21 【问题描述】:

tf.keras.backend.clear_session 究竟是做什么的?

https://www.tensorflow.org/api_docs/python/tf/keras/backend/clear_session

它与tf.reset_default_graph()sess.close() 有什么关系?

https://www.tensorflow.org/api_docs/python/tf/reset_default_graph

https://www.tensorflow.org/api_docs/python/tf/Session#close

【问题讨论】:

【参考方案1】:

TensorFlow 1.0 中有两个主要概念GraphsSessions

Graph - 它是一组连接的操作和占位符,在没有会话的情况下不包含任何张量(numpy 数组)或值。打个比方,您可以考虑一条没有任何成分的食品加工流水线,但工艺和配方已定义。

Session - 它获取图形并使用初始值初始化变量,并准备好将一些输入到占位符中以开始执行将图形定义为占位符中的提要值的操作,最后,它将为您提供最终你想要的操作节点的输出(在最后一层的神经网络节点中。)(比如喂西红柿和得到番茄酱作为输出。)

回到你真正的问题。

如果您使用tf.keras.backend.clear_session,它将丢弃驻留在图中定义的变量中的值,留下一个空容器。 (它会释放你的 RAM 空间。),现在你可以从其他文件中加载权重。

如果您使用tf.reset_default_graph(),它将重置图形,并删除所有已定义的操作及其与相应权重的相互连接。现在您必须为执行加载模型架构和权重。

实际上它似乎在做同样的事情,因为它是 tf.reset_default_graph() 将在调用 k.clear_session() 时在内部调用,但 clear_session 也会为新操作启动新图,您可以查看源代码 @987654321 @

【讨论】:

在第二种情况下有一个错字我的意思是它与sess.close()的区别是什么?

以上是关于tf.keras.backend.clear_session 实际上做了啥?的主要内容,如果未能解决你的问题,请参考以下文章