我尝试使用Estimator设置一个非常简单的Mnist示例。
首先,我使用了估算器的弃用fit()参数x,y和batch_size。这执行得非常快,并且使用了大约100%的GPU而不会影响CPU(大约10%的利用率)。所以它按预期工作。
因为不推荐使用x,y和batch_size参数,所以我想对fit()函数使用input_fn参数。为了构建input_fn,我使用了tf.slice_input_producer并将其与tf.train.batch一起批处理。这是我的代码https://gist.github.com/andreas-eberle/11f650fca0dce4c9d3d6c0955145e80d。您应该能够使用tensorflow 1.0运行它。
我的问题是现在训练速度非常慢,只占我GPU的30%左右(显示在nvidia-smi中)。
我还尝试增加slice_input_producer的队列容量,并增加用于批处理的线程数。但是,这仅有助于获得大约45%的GPU利用率,并导致100%的GPU利用率。
我做错了什么?是否有更好的方式来输入输入和批量输入?我不想手动创建批处理(创建numpy输入数组的子数组),因为我想将此示例用于更复杂的输入队列,我将在其中读取和预处理图中的图像。
我不认为我的硬件应该是问题所在: