このコードはうまくいきますが、それは私にCPUの2倍のブーストを与えますが、もっと速くできると思います。私は(forループ) TensorFlow GPUエポック最適化?
for i in tqdm(range(epochs), ascii=True):
sess.run(train_step, feed_dict={x: train, y_:labels})
私は何が起こることは、すべてのエポックは、我々は次の何をすべきかについては、CPUに戻るということだと思います...問題は、この地域に帰着考えると、forループGPUにプッシュバックします。これで、GPUはデータセット全体をメモリに収めることができます。
どうすればよいですか? CPUに戻ってその状態を報告することなく、GPUで1000エポックを連続的にクランチさせるだけです。または、ステータスを報告する頻度を制御することもできます。 GPUでクランチ1000エポックを言うといいですし、私の列車とバリデーションを確認してから、もう一度クラッシュしてください。しかし、すべての時代の間にそれをすることは本当に役に立たない。
おかげで、
〜デビッド・
としてタイムラインプロファイリングを行うことができます把握する
データキューは、オープンGPUカーネルを維持していますか?私はあなたがここで正しいかもしれないと思います。また、IPython型環境からプロファイリングを実行することも可能ですか?私はIPythonでプロトタイプを作成し、その後、プロダクションのために出荷します。私は非IPythonを行うことができると思いますが、私は本当にIPythonが好きです... –
YouuはIPythonでタイムラインプロファイリングを行うことができます。それ以外の種類のプロファイリングはそれほど重要ではありません。私が言ったことはちょうどあなたに示されます.100usはsession.runで過ごしました。データキューを使用する利点は、すべてのデータがTensorFlow側に保持されることです。 feed_dictでは、各ステップで2つのコピーがあります.1つはPythonからTensorFlowランタイムにコピーし、もう1つはGPUにコピーします。 –