Tensorflow:如何运行许多培训miniatch步骤?

时间:2017-04-10 20:34:41

标签: session optimization tensorflow neural-network

我正在努力加快我的前馈网络的培训(层大小:20-80-40-20-2。)我的数据集有大约100 000个数据点。我使用以下代码来训练模型:

for ep in range(epochs):
    for i in range(0, N, mini_batch_sz):
        j = i + mini_batch_sz
        sess.run(train_op, feed_dict={vX:X[i:j], vY:Y[i:j]})

其中epochs和mini_batch_sz分别为10000和25。这个循环将为每个python循环执行一个小批量步骤。我在培训期间的GPU负载仅为15%。我想知道是否有可能将多个小批量训练数据传递给tensorflow以减少python与底层张量流引擎之间的交互?

1 个答案:

答案 0 :(得分:0)

20-80-40-20-2不是一组特别大的矩阵乘法来使GPU饱和。此外,由于您在每个培训步骤中从numpy(或列表)提供数据,因此从Python到C ++和CPU到GPU的副本都是关键路径的一部分。既然你提到你的训练数据只有几个MB,你可以考虑将整个训练数据作为tf.constant放在GPU内存中,在GPU上进行切片,然后只传递{{每个培训步骤1}}和i