Python 在多进程中使用一个图运行tensorflow

Python 在多进程中使用一个图运行tensorflow,python,tensorflow,multiprocessing,python-multiprocessing,ensemble-learning,Python,Tensorflow,Multiprocessing,Python Multiprocessing,Ensemble Learning,我试图用5个集成网络来训练分类器。我决定用不同的批处理来训练他们,所以我想创建多个进程来节省时间 以下是我的算法设计: import multiprocessing as mp import tensorflow as tf # create() function returns 5 optimizer for 5 network, i.e. len(opt_list) = 5 opt_list = create() def sub_process(sess, opt, feed_batch

我试图用5个集成网络来训练分类器。我决定用不同的批处理来训练他们,所以我想创建多个进程来节省时间

以下是我的算法设计:

import multiprocessing as mp
import tensorflow as tf

# create() function returns 5 optimizer for 5 network, i.e. len(opt_list) = 5
opt_list = create()

def sub_process(sess, opt, feed_batch):
    sess.run(opt, feed_dict=feed_batch)

batch_list = []
for i in range(5):
    batch = generate_batch(batch_size=100)
    batch_list.append(batch)

for i in range(5):
    p = mp.Process(target=sub_process, args=(sess, opt_list[i], batch_list[i]))
    p.start()

for i in range(5):
    p.join()
首先,我构建图形并将每个网络部署在5个不同的设备上(我总共有5个GPU)

然后,我从数据集中提取样本(例如,如果我想向一个网络提供100个图像,那么我将生成500个样本)

接下来,我使用python3包多处理创建了5个进程。在给定输入参数的情况下,每个进程运行一个子进程函数

但是,当我运行代码时,我得到以下错误

2018-08-14 18:13:56.776853: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.776940: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.776978: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.777004: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.830762: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.831239: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.831262: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.831285: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:56.902612: E tensorflow/core/grappler/clusters/utils.cc:82] Failed to get device properties, error code: 3
2018-08-14 18:13:57.654653: E tensorflow/stream_executor/cuda/cuda_driver.cc:1227] failed to enqueue async memcpy from host to device: CUDA_ERROR_NOT_INITIALIZED; GPU dst: 0x1085d87f000; host src: 0x1083783f700; size: 4=0x4
2018-08-14 18:13:57.660200: E tensorflow/stream_executor/cuda/cuda_driver.cc:1227] failed to enqueue async memcpy from host to device: CUDA_ERROR_NOT_INITIALIZED; GPU dst: 0x1085d87f000; host src: 0x1083783f700; size: 4=0x4
2018-08-14 18:13:57.758658: E tensorflow/stream_executor/cuda/cuda_driver.cc:1227] failed to enqueue async memcpy from host to device: CUDA_ERROR_NOT_INITIALIZED; GPU dst: 0x1085d87f000; host src: 0x1083783f700; size: 4=0x4
2018-08-14 18:13:57.808281: E tensorflow/stream_executor/cuda/cuda_driver.cc:1227] failed to enqueue async memcpy from host to device: CUDA_ERROR_NOT_INITIALIZED; GPU dst: 0x1085d87f000; host src: 0x1083783f700; size: 4=0x4
有人能告诉我为什么会有这样的错误吗?为了得到我想要的东西,我应该在代码中更改什么


谢谢

我建议看一看,它有一个很好的API,可以让多个GPU获得良好的性能