我正在使用带有 Tensorflow 的 Keras 作为后端。
我试图在我的主进程中保存一个模型,然后在另一个进程中加载/运行(即调用 model.predict
)。
我目前只是尝试使用文档中的天真方法来保存/加载模型: https ://keras.io/getting-started/faq/#how-can-i-save-a-keras-model。
所以基本上:
model.save()
在主进程中model = load_model()
在子进程中model.predict()
在子进程中
但是,它只是挂在 load_model
调用上。
四处搜索,我发现了这个可能相关的答案,表明 Keras 只能在一个过程中使用: using multiprocessing with theano 但我不确定这是否属实(似乎找不到太多相关信息)。
有没有办法实现我的目标?非常感谢高级描述或简短示例。
注意:我尝试过将图形传递给进程的方法,但失败了,因为它似乎无法选择张量流图形(相关的 SO 帖子: Tensorflow: Passing a session to a python multiprocess )。如果确实有办法将张量流图/模型传递给子进程,那么我也对此持开放态度。
谢谢!
原文由 John Cast 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据我的经验 - 问题在于将
Keras
加载到一个进程,然后在keras
加载到您的主环境时生成一个新进程。但是对于某些应用程序(例如,训练Keras
模型的混合),最好将所有这些都放在一个过程中。所以我的建议是以下(有点麻烦 - 但对我有用)方法:但请执行以下操作:
不同的方法只是为不同的模型操作准备不同的脚本。但这可能会导致内存错误,尤其是当您的模型正在消耗内存时。请 注意,由于这个原因,最好严格按顺序执行。