KerasでGPUを使う際に「could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR Segmentation fault (core dumped)」が発生
GPUが割り当てられない
import cv2 import numpy as np import glob import os : import keras.callbacks import keras.backend.tensorflow_backend as KTF import tensorflow as tf old_session = KTF.get_session() session = tf.Session('') KTF.set_session(session) KTF.set_learning_phase(1) os.environ["CUDA_VISIBLE_DEVICES"]="0"
以下のようなエラーが発生
2018-08-13 13:55:36.505571: E tensorflow/stream_executor/cuda/cuda_dnn.cc:332] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR Segmentation fault (core dumped)
GPUが使えていないようなのでos.environ["CUDA_VISIBLE_DEVICES"]="1"
に変更してみてもエラーが出てしまう。
原因・解決策
os.environ["CUDA_VISIBLE_DEVICES"]="1" # 前に移動 # Add for TensorBoard import keras.callbacks import keras.backend.tensorflow_backend as KTF import tensorflow as tf old_session = KTF.get_session() session = tf.Session('') KTF.set_session(session) # これより前にGPUを指定 KTF.set_learning_phase(1)
どうやらKTF.set_session(session)
の時点で使うGPUを決めているそうなので、その前にos.environで使用するGPUを決めてあげることで解決出来た。