GPU版的tensorflow在模型訓練時遇到Blas GEMM launch failed錯誤,或者keras遇到相同錯誤(keras 通常將tensorflow做爲backend,若是安裝了GPU版本的tensorflow,那麼在使用keras時會優先使用GPU),相似報錯以下:python
InternalError (see above for traceback): Blas GEMM launch failed : a.shape=(300, 1), b.shape=(1, 10), m=300, n=10, k=1
這是調用GPU時,顯存分配遇到了問題。比較保險的方式是在模型訓練以前爲tensorflow或者keras分配顯存空間,tensorflow就用以下語句建立sessionsession
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
而keras就在引入keras時進行參數設置:spa
import tensorflow as tf from keras.backend.tensorflow_backend import set_session config = tf.ConfigProto() config.gpu_options.allocator_type = 'BFC' #A "Best-fit with coalescing" algorithm, simplified from a version of dlmalloc. config.gpu_options.per_process_gpu_memory_fraction = 0.3 config.gpu_options.allow_growth = True set_session(tf.Session(config=config))
若是使用ipython notebook,作完上述設置後可能出現GPU sync failed,重啓一下就應該沒問題了。.net
摘自: http://www.javashuo.com/article/p-qsvksspz-nq.htmlcode
本身了試了tensorflow的有用,記錄一下blog