keras.backend.clear_session() 是在进程中还是全局删除会话?

Len*_* S. 5 python multiprocessing keras tensorflow

我在单独的脚本中创建了多达 100 个 keras 模型,并使用 model.save() 将它们保存在本地。为了训练它们,我使用 multiprocessing.pool。在这些过程中,我分别加载每个模型。由于发生内存错误,我使用了 keras.backend.clear_session()。这似乎有效,但我也读到它删除了模型的权重。

所以回到我的问题,如果我在池的每个进程中导入“from keras import backend as K”,最后,在我保存模型后,我使用 K.clear_session(),我是否清除了重要数据并行运行的进程或只是这个进程的数据?

如果它删除了并行运行进程的重要数据。是否有可能在进程内创建本地 tensorflow 会话。然后将所需的模型分配给这个会话,然后 clear_session() 这个本地的?

我很感激任何输入。

此外,如果有人知道 clear_session() 的确切功能,那将会很有帮助。这个功能的解释不是很丰富,特别是对于像我这样的初学者。

谢谢 :)

Sun*_*nil 3

我遇到了类似的问题,但我没有并行运行模型,而是可以选择:任一模型(在不同的文件夹中,但模型文件名相同)都将运行。

当我在没有clear_session的情况下直接运行模型时,它与之前加载的模型发生冲突,并且无法切换到其他模型。在语句开头(加载模型)包含clear_session之后,它正在工作,但是它也删除了在程序开头声明的预测活动所需的全局变量。

经验教训:clear_session 不仅会“销毁当前的 TF 图并创建一个新的”。如文档中所述,还会删除程序中定义的全局变量。

所以我在clear_session语句之后定义了全局变量

** 感谢反馈