2017-11-23 3 views
0

gpuのテンソルフローがインストールされました。私のCNNにケラスを使用しています。トレーニング中に私のGPUは約5%しか使われていませんが、6gbのVramのうち5本がトレーニング中に使用されています。コンソールに0.000000e + 00が表示され、gpuが100%になることがありますが、数秒後には、トレーニングが5%に戻ります。私のGPUはZotac gtx 1060 miniで、Ryzen 5 1600xを使用しています。GPUのみが使用されています1-5%Tensorflow-gpuとKeras

Epoch 1/25 
121/3860 [..............................] - ETA: 31:42 - loss: 3.0575 - acc: 0.0877 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 2/25 
121/3860 [..............................] - ETA: 29:48 - loss: 3.0005 - acc: 0.0994 - val_loss: 0.0000e+00 - val_acc: 0.0000e+00Epoch 3/25 
    36/3860 [..............................] - ETA: 24:47 - loss: 2.9863 - acc: 0.1024 
+0

あなたはこれを理解しましたか?私は同じ問題に直面している... –

答えて

1

通常、私たちはボトルネックをGPU(つまり100%利用率)にしたいと考えています。それが起こっていない場合、コードの他の部分は、各バッチ処理中に長い時間がかかります。 (あなたが任意のコードを追加していなかったspecialyなので)それはそれが何であるかを言うのは難しいですが、あなたが試すことができますいくつかあります:

1.入力データ

は、ネットワークの確認入力データを作成します常に利用可能です。 /gpu:0がデフォルトであるため、これは、ほとんど問題ありません

GPUにモデルを

model.fit(..., use_multiprocessing=True, workers=8) 

2.力:ディスクから画像を読み取ると、長い時間がかかりますので、複数workersmultiprocessingインタフェースを使用しますデバイスが、それはあなたが意図したデバイスでモデルを実行していることを確認する価値がある:

with tf.device('/gpu:0'): 
    x = Input(...) 
    y = Conv2D(..) 
    model = Model(x, y) 

2.チェックMO delのサイズ

バッチサイズが大きく、ソフト配置が可能な場合は、ネットワークの一部(GPUのメモリに収まらない)がCPUに配置される可能性があります。これによりプロセスが大幅に遅くなります。

ソフト配置がオンになっている場合は、メモリエラーがスローされた場合は無効にして、チェックしてみてください:そのような場合、

# make sure soft-placement is off 
tf_config = tf.ConfigProto(allow_soft_placement=False) 
tf_config.gpu_options.allow_growth = True 
s = tf.Session(config=tf_config) 
K.set_session(s) 

with tf.device(...): 
    ... 

model.fit(...) 

を、それが収まるまで、バッチサイズを削減し、あなたに良いGPUの使用率を与えることを試みます。次に、ソフト配置を再度オンにします。

関連する問題