我有一个巨大的NumPy矩阵已加载到内存中。我想在当时使用20,000行来适应(执行梯度下降),但在这样做时,接下来的20,000行将被复制到GPU内存中,因此GPU始终会提供数据,达到100%的GPU利用率。 / p>
我尝试使用新的tf.Data
API执行此操作。我编写了下面的代码,但利用率几乎达不到50%。我不完全确定这是由于我的错误,还是Tensorflow中的错误。
x = tf.placeholder(shape=[None,xSize], dtype=typ)
y = tf.placeholder(shape=[None,ySize], dtype=typ)
# xT and yT are huge NumPy arrays
def trainOneEpoch(xT, yT):
batchSize = 20000
dataset = tf.data.Dataset.from_tensor_slices((x, y))
dataset = dataset.batch(batchSize).prefetch(2)
iterator = dataset.make_initializable_iterator()
sess.run(iterator.initializer, {x: xT, y: yT})
while True:
try:
xS, yS = sess.run(iterator.get_next())
sess.run(trainer, {x: xS, y: yS})
except tf.errors.OutOfRangeError:
break
如何使这项工作(有或没有tf.Data)?