前回の記事「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を再起動の後、再度コードを実行したところ、今度は問題なくコードの実行ができました。
もし、同じようなエラーで困っている人がいたら、試してみてください。