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
答案 0 :(得分:2)
TensorFlow 1.0 图形和会话中有两个主要概念。
Graph-它是一组连接的操作和占位符,在没有会话的情况下不包含任何张量(numpy数组)或值。打个比方,您可以考虑不包含任何成分的食品加工装配线,但是定义了过程和配方。
会话-它获取图形并用初始值初始化变量,并准备将其放入占位符中,以开始实施将图形定义为占位符中的源值的操作,最后,它将进行传递您可以从所需的操作节点(位于最后一层的神经网络节点中)获得最终输出(例如,喂西红柿和获取番茄酱作为输出。)
回到您的真实问题。
如果使用tf.keras.backend.clear_session
,它将丢弃位于图中定义的变量中的值,并留下一个空容器。 (这将释放您的RAM空间。),现在您可以从其他文件中加载权重了。
如果使用tf.reset_default_graph()
,它将重置图形,并且将删除所有定义的操作以及它们与相应权重的互连。现在,您必须同时加载模型架构和权重。
实际上似乎在做同样的事情,因为它是tf.reset_default_graph()将在调用k.clear_session()的同时在内部被调用,但是clear_session还将为新操作提供新图形,您可以检查源代码{{ 3}}