Windows10のGTX1070でkerasニューラルネットワークのトレーニングと予測を実行しています。ほとんどの場合は機能していますが、不平を言うことがあります。
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:359] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:366] error retrieving driver version: Unimplemented: kernel reported driver version not implemented on Windows
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:326] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
F c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\kernels\conv_ops.cc:659] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
文字通りのエラーの意味でもOOMエラーでも説明できません。
直し方?
Set gpu optionper_process_gpu_memory_fractionを使用してgpuの使用を制限してみてください。
それをいじって、何が機能し、何が機能しないかを確認します。
開始ベースラインとして.7を使用することをお勧めします。
この問題の解決策を手に入れました。 Nvidia GEforce920Mを搭載したWindows10でも同じ問題が発生しました。 cudnnライブラリの正しいバージョンを検索します。バージョンがCUDAバージョンと互換性がない場合、テンソルフローのインストール中にエラーはスローされませんが、GPUでのメモリ割り当て中に干渉します。 CUDAとCUDNNのバージョンを確認してください。また、上記のセッションの作成に関する指示に従ってください。
ついに問題は解決しました、私はこれに苦労して何時間も費やしました。
リンクに記載されているように、インストールのすべての手順を正しく実行することをお勧めします
TensorFlow- https://www.tensorflow.org/install/install_windows
およびCuDNNの場合-
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows
私にとってはこれだけでは不十分でした。GeForceExperienceウィンドウからGeForceGame Ready Driverを更新しようとしましたが、再起動すると動作し始めました。
ドライバーはリンクからダウンロードすることもできます https://www.geforce.com/drivers
私は時々Windows10とKerasで問題に遭遇しました。再起動すると問題が短時間解決しますが、再度発生します。
参照します https://github.com/fchollet/keras/issues/1538
import tensorflow as tf
from keras.backend.tensorflow_backend import set_session
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))
設定は停止問題を解決します。
tf dokuは私を大いに助けてくれます GPUメモリの増加を許可します
1つ目はallow_growthオプションで、ランタイム割り当てに基づいてできるだけ多くのGPUメモリのみを割り当てようとします。最初はごくわずかなメモリの割り当てを開始し、セッションが実行されてより多くのGPUメモリが必要になると、必要なGPUメモリ領域を拡張します。 TensorFlowプロセス。メモリの断片化がさらに悪化する可能性があるため、メモリを解放しないことに注意してください。このオプションをオンにするには、次の方法でConfigProtoのオプションを設定します。
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)
または
with tf.Session(graph=graph_node, config=config) as sess:
...
2番目の方法はper_process_gpu_memory_fractionオプションです。これは、表示されている各GPUに割り当てる必要のあるメモリの総量の割合を決定します。たとえば、次の方法で、各GPUの合計メモリの40%のみを割り当てるようにTensorFlowに指示できます。
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)