我正在使用TensorFlow 1.9,配备有3GB显存的NVIDIA GPU。我的迷你批量大小为100MB。因此,我可能可以同时在GPU上安装多个迷你批次。所以我的问题是关于这是否可行以及是否是标准做法。
例如,当我训练TensorFlow模型时,我在每个纪元都会运行以下内容:
这个代码迭代我的小批次,每个小批次执行一次权重更新。但是
一种选择是增加小批次的大小,使小批次更接近3GB的GPU容量。然而,为了帮助优化,我想保持相同的小批次大小。
因此,另一个选择可能是并行发送多个小批次到GPU,并每个小批次执行一次权重更新。能够并行发送小批次将显著减少训练时间。
这种做法有没有可能并且值得推荐呢?
例如,当我训练TensorFlow模型时,我在每个纪元都会运行以下内容:
loss_sum = 0
for batch_num in range(num_batches):
batch_inputs = get_batch_inputs()
batch_labels = get_batch_labels()
batch_loss, _ = sess.run([loss_op, train_op], feed_dict={inputs: batch_inputs, labels: batch_labels})
loss_sum += batch_loss
loss = batch_loss / num_batches
这个代码迭代我的小批次,每个小批次执行一次权重更新。但是
image_data
和label_data
的大小仅为100MB,因此大部分GPU没有被使用。一种选择是增加小批次的大小,使小批次更接近3GB的GPU容量。然而,为了帮助优化,我想保持相同的小批次大小。
因此,另一个选择可能是并行发送多个小批次到GPU,并每个小批次执行一次权重更新。能够并行发送小批次将显著减少训练时间。
这种做法有没有可能并且值得推荐呢?