gpt4 book ai didi

python - Keras 线程安全吗?

转载 作者:IT老高 更新时间:2023-10-28 20:54:55 28 4
gpt4 key购买 nike

我正在使用 Python 和 Keras(目前使用 Theano 后端,但我对切换没有疑虑)。我有一个神经网络,我可以并行加载和处理多个信息源。目前,我一直在一个单独的进程中运行每一个,它从文件中加载自己的网络副本。这似乎是对 RAM 的浪费,所以我认为拥有一个多线程进程和一个由所有线程使用的网络实例会更有效。但是,我想知道 Keras 对于任一后端是否都是线程安全的。如果我在不同的线程中同时在两个不同的输入上运行 .predict(x),我会遇到竞争条件或其他问题吗?

谢谢

最佳答案

是的,Keras 是线程安全的,如果你稍微注意一下的话。

其实在强化学习中有一种算法叫Asynchronous Advantage Actor Critics (A3C)每个代理都依赖相同的神经网络来告诉他们在给定状态下应该做什么。换句话说,每个线程同时调用 model.predict ,就像您的问题一样。使用 Keras 的示例实现是 here .

但是,如果您查看代码,则应该特别注意这一行:model._make_predict_function() # 必须在线程前初始化

这在 Keras 文档中从未提及,但它必须使其同时工作。简而言之,_make_predict_function是编译predict函数的函数。在多线程设置中,必须手动调用该函数提前编译predict,否则predict函数在你第一次运行之前不会被编译,这将当许多线程同时调用它时会出现问题。可以看详细解释here .

到目前为止,我还没有遇到过 Keras 中的多线程问题。

关于python - Keras 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40850089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com