Categories: CUDATensorflow

Tensorflow+Kerasで【CUDNN_STATUS_NOT_INITIALIZED】エラー

前回の記事「Tensorflow+Kerasの環境構築」でTensorflow+Kerasの環境構築をしました。

それから、畳み込み層などがあるCNNの入ったモデルを構築したところ、実行の際にCUDNN関連と思われるエラーが頻発し、上手く実行できないという事態に……。

Tensorflowのバージョンを弄ったり、cuDNNのバージョンを弄ったりしてみましたが、意外とあっさりと簡単な方法で直りましたという話。

今回の環境

・OS : Windows10(64bit)
・GPU: GeForce GTX 950
・CUDA 9.0
・cuDNN v7.0.5
・Tensorflow 1.11.0
・Keras 2.2.4

エラーの内容

ざっと羅列すると、以下みたいなエラーが頻発し、モデルの訓練に行けませんでした。


E tensorflow/stream_executor/cuda/cuda_dnn.cc:353] Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
E tensorflow/stream_executor/cuda/cuda_dnn.cc:357] Error retrieving driver version: Unimplemented: kernel reported driver version not implemented on Windows

failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)

いろいろcuDNNのバージョンとかを変えたり、Tensorflowのバージョンを変えてみるも一向に上手くいかず。

Tensorflowで引っかかっているっぽいので、Kerasの有無はたぶん関係ないと思います。

解決方法

上記のエラーが必ずしもこれで治るというわけではないと思いますが、私はNVIDIAのGPUドライバーを再度入れなおしたら無事動くようになりました。

外部サイト(NVIDIA):NVIDIAドライバダウンロード

自分のGPUに合わせた最新のドライバをインストールして、PCを再起動の後、再度コードを実行したところ、今度は問題なくコードの実行ができました。

もし、同じようなエラーで困っている人がいたら、試してみてください。

Haruoka