1

我尝试使用 Estimator 设置一个非常简单的 Mnist 示例。

首先,我使用了估计器不推荐使用的 fit() 参数 x、y 和 batch_size。这执行得非常快,并且使用了我大约 100% 的 GPU,而对 CPU 的影响不大(大约 10% 的使用率)。所以它按预期工作。

因为不推荐使用 x、y 和 batch_size 参数,所以我想将 input_fn 参数用于 fit() 函数。为了构建 input_fn,我使用了 tf.slice_input_producer 并使用 tf.train.batch 对其进行批处理。这是我的代码https://gist.github.com/andreas-eberle/11f650fca0dce4c9d3d6c0955145e80d。您应该可以使用 tensorflow 1.0 运行它。

我的问题是训练现在运行得很慢,只使用了大约 30% 的 GPU(显示在 nvidia-smi 中)。

我还尝试增加 slice_input_producer 的队列容量并增加用于批处理的线程数。然而,这只有助于达到大约 45% 的 GPU 利用率,并导致 100% 的 GPU 利用率。

我究竟做错了什么?有没有更好的方法来提供输入并对其进行批处理?我不想手动创建批次(创建 numpy 输入数组的子数组),因为我想将此示例用于更复杂的输入队列,我将在其中读取和预处理图中的图像。

我不认为我的硬件应该是问题:

  • 项目清单
  • 视窗 10
  • 英伟达 GTX 960M
  • i7-6700HQ
  • 32 GB 内存
4

0 回答 0