Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Tensorflow 2.0和Keras API是否线程安全? Tensorflow 2.0线程安全吗?_Multithreading_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Multithreading Tensorflow 2.0和Keras API是否线程安全? Tensorflow 2.0线程安全吗?

Multithreading Tensorflow 2.0和Keras API是否线程安全? Tensorflow 2.0线程安全吗?,multithreading,tensorflow,machine-learning,keras,Multithreading,Tensorflow,Machine Learning,Keras,更具体地说,在Tensorflow 2.0(使用Keras API)中,在同一模型上从不同线程调用fit/predict或其他方法是否安全 我无法从文档或在线查找中找到明确的答案 我从2017年看到,Keras(尽管问题中提到了Theano后端)是线程安全的,但您必须调用私有方法模型。在调用predict()之前,必须先调用函数()(我相信它已经被弃用)。然而,我从2019年的文章中读到,它不是线程安全的 我还发现,从2018年开始,Tensorflow(Keras之前的版本)是线程安全的,但您

更具体地说,在Tensorflow 2.0(使用Keras API)中,在同一模型上从不同线程调用
fit
/
predict
或其他方法是否安全

我无法从文档或在线查找中找到明确的答案

我从2017年看到,Keras(尽管问题中提到了Theano后端)是线程安全的,但您必须调用私有方法
模型。在调用
predict()
之前,必须先调用函数()
(我相信它已经被弃用)。然而,我从2019年的文章中读到,它不是线程安全的

我还发现,从2018年开始,Tensorflow(Keras之前的版本)是线程安全的,但您必须确保使用默认的图形明确性(我认为这与Tensorflow 2.*无关,因为急切的执行)。当我在eager execution中查找线程安全性时,我在文档中看到确实提到了eager execution的线程安全性,但它与Java有关

更让人困惑的是,我从今年(2020年)开始在Github中看到了一个带有Keras的A3C实现,该实现在培训共享策略/价值网络之前使用锁,这暗示Keras不是线程安全的,您必须在培训共享模型之前获得锁。然而,在我看来,实现是有缺陷的,因为每个工作人员都在创建和使用自己独特的锁,这违背了拥有锁的目的。我的结论是,要么是因为Keras是线程安全的,所以他的代码在不考虑“锁”的情况下成功运行,要么是因为他有一个bug


我做了我自己的最终测试,在测试中,我运行了两个线程,将同一个模型拟合到不同的输出(对于相同的常量输入),并尝试在培训期间调用predict,它似乎起到了作用,但我问这个问题是因为我想确定。Tensorflow 2.0/Keras是否存在线程不安全的情况?

根据GitHub问题中Keras的贡献者:

Keras型号不能保证线程安全。考虑有 每个线程中模型的独立副本,用于CPU推断