从"并行阅读Keras的发电机

时间:2018-01-18 17:15:28

标签: parallel-processing keras generator

我有一个分为文件的大数据集。 我想在一个文件中读取和处理我的数据,为此我有这个keras生成器:

def myGenerator():
   while 1:
       rnd = random.randint(1,200)
       strRnd = str(rnd)
       lenRnd = len(strRnd)
       rndPadded = strRnd.rjust(5, '0') 
       nSearchesInBatch = 100
       f = "path/part-" + rndPadded + "*" #read one block of data

       data = sqlContext.read.load(f).toPandas()

       imax = int(data.shape[0]/nSearchesInBatch) #number of batches that will be created sequentially from the generator

       for i in range(imax):
       data_batch = data[i*nSearchesInBatch:(i+1)*nSearchesInBatch]

       features = data_batch['features']
       output = data_batch['output']

       yield features, output

问题在于读取占用的最大部分(每个文件大约200mb),同时GPU等待,可以预先读取下一批,同时GPU在前一个上进行训练?

当一个文件被读取并分步(内循环)时,CPU被隐藏并且GPU训练,一旦纪元结束,GPU就会空闲并且cpu开始读取(需要20 / 30秒)。

任何可以并行化的解决方案吗?

0 个答案:

没有答案