Ujj*_*wal 5 python multiprocessing tensorflow
我想使用多个进程(not threads)进行一些预处理并将结果排入tf.RandomShuffleQueue,我的主图可以使用它来进行训练.
有没有办法做到这一点 ?
我已将我的数据集转换为分割为256个分片的TFRecords.我想开始使用20个进程multiprocessing,让每个进程处理一系列分片.每个过程都应该读取图像,然后对它们进行扩充并将它们推入一个tf.RandomShuffleQueue可以将输入提供给图形进行训练的图像.
有人建议我通过这个inception例子tensorflow.但是,这是一种非常不同的情况,因为只有数据分片的读取是由多个线程(not processes)完成的,而预处理(例如 - 扩充)是在主线程中进行的.
(这旨在解决您的实际问题)
在另一个主题中,有人告诉您Python具有全局解释器锁(GIL),因此多核不会带来速度优势,除非您使用多个进程。
这可能是促使您想要使用multiprocessing.
然而,对于 TF,Python 通常仅用于构建“图”。实际执行发生在本机代码(或 GPU)中,GIL 在其中不起任何作用。
鉴于此,我建议干脆让 TF 使用多线程。这可以使用intra_op_parallelism_threads参数来控制,例如:
with tf.Session(graph=graph,
config=tf.ConfigProto(allow_soft_placement=True,
intra_op_parallelism_threads=20)) as sess:
# ...
Run Code Online (Sandbox Code Playgroud)
(旁注:如果您有一个 2-CPU、32 核的系统,最好的论据很可能是intra_op_parallelism_threads=16,这取决于很多因素)
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |