Tensorflow-GPU 訓練時出現報錯信息:Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED

GPU 版本訓練,程序剛啓動時,可能會出現下面的錯誤信息:

  • Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED

  • Failed to get convolution algorithm. This is probably because cuDNN failed to initialize.so try looking to see if a warning log message was printed above

解決方案:

  • 首先請確保安裝的 CUDA、Cudnn、Tensorflow-gou 版本一致兼容性,關於各版本對應需安裝的版本情況,可以查看這篇博文:tensorflow各個版本的CUDA以及Cudnn版本對應關係此處一個小建議:不要安裝的 CUDA 版本太高,9.0、10.0的就可以,安裝tensorflow-gpu是不要用conda 命令,要用 pip 命令,conda 安裝的話會捆綁一個對應不兼容 CUDA版本

  • 在安裝版本沒有問題的情況下,導致報錯的原因就是內存不足的原因,可以在在代碼開始部分加入幾行控制 GPU 內存消耗的命令,如下;

    參考鏈接: https://github.com/tensorflow/tensorflow/issues/28326

import keras
import tensorflow as tf

config = tf.ConfigProto(allow_soft_placement=True)
config.gpu_options.allow_growth = True
config.gpu_options.per_process_gpu_memory_fraction = 0.7
keras.backend.tensorflow_backend.set_session(tf.Session(config=config))
  • per_process_gpu_memory_fraction = 0.7 ,0.7表示 GPU 內存消耗最大佔比,不要設置過高,0.7、0.8即可;
  • allow_soft_placement=True,當 訓練時 GPU 內存消耗不足或者衝突是,程序自行對內存進行分配;不足或者衝突是,程序自行對內存進行分配;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章