这是我得到的警告:
WARNING:tensorflow:multiprocessing can interact badly with TensorFlow, causing nondeterministic deadlocks. For high performance data pipelines tf.data is recommended.
我编写的序列子类严格执行加载和读取I/O jpg文件。我想只要没有两个线程在同一个文件上同时执行,事情就应该正常了
我训练了几次,到目前为止,没有错误。但是如果有什么潜在的不好的事情可能发生,我想得到反馈
最初在
TensorFlow 2.0
版本中,keras.utils.Sequence
出现问题,而multiprocessing=True
由于死锁而导致挂起。后来在Tensorflow 2.1
中添加了此警告以解决此问题您可以忽略此警告,因为您没有执行任何会造成死锁情况的处理
通常,死锁的一个必要条件是,一个进程以独占方式访问一个资源,并且正在等待另一个(source)
这意味着,如果
Sequence
(或生成器)类仅持有对单个资源(例如.jpg
映像文件)的访问权,则不会发生死锁。此外,如果您正在从内存中读取数据,并且没有锁定(例如只读数据),则不会发生死锁(由于缺乏独占性)换句话说:警告可能不适用,除非您正在以线程安全的方式在
Sequence
或生成器中读取或修改多个数据我训练了两个具有相同超参数的模型,一个是分类模型,另一个是回归模型。分类模型使用multi_processing=True训练,没有任何警告,而使用mse损失训练回归模型时,它给出警告,缓慢地消耗整个内存,系统挂起。因此,我不得不关闭multi_处理,它消耗了将近50%的系统内存。请注意,尽管分类模型的参数比回归模型多,但两个模型的训练都使用了相同的批量
相关问题 更多 >
编程相关推荐