finished with exit code -1073740791 (0xC0000409)解決方案

1.在用keras框架跑NER的train時,並且只是在用了keras_contrib.layersCRF時出現問題:session

遇到無錯跳出finished with exit code -1073740791 (0xC0000409),框架

 

(有其餘博主說的減少batchsize的 我試過把batchsize減少爲2,可是沒有用)大數據

 

2.查出是顯卡內存不足的問題,解決以下(對我的有效):spa

 

import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.net

3.<原理參考>:code

keras在使用GPU的時候有個特色,就是默認所有佔滿顯存。這樣若是有多個模型都須要使用GPU跑的話,那麼限制是很大的,並且對於GPU也是一種浪費。所以在使用keras時須要有意識的設置運行時使用那塊顯卡,須要使用多少容量。blog

這方面的設置通常有三種狀況:內存

1.指定顯卡 2.限制GPU用量 3.即指定顯卡又限制GPU用量get

 

1、指定顯卡it

import os os.environ["CUDA_VISIBLE_DEVICES"] = "2"

這裏指定了使用編號爲2的GPU,你們能夠根據須要和實際狀況來指定使用的GPU

 

2、限制GPU用量

一、設置使用GPU的百分比

import tensorflow as tf import keras.backend.tensorflow_backend as KTF #進行配置,使用30%的GPU 
 config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.3 session = tf.Session(config=config) # 設置session KTF.set_session(session )

須要注意的是,雖然代碼或配置層面設置了對顯存佔用百分比閾值,但在實際運行中若是達到了這個閾值,程序有須要的話仍是會突破這個閾值。換而言之若是跑在一個大數據集上仍是會用到更多的顯存。以上的顯存限制僅僅爲了在跑小數據集時避免對顯存的浪費而已。

二、GPU按需使用

import tensorflow as tf import keras.backend.tensorflow_backend as KTF config = tf.ConfigProto() config.gpu_options.allow_growth=True #不所有佔滿顯存, 按需分配 
 session = tf.Session(config=config) # 設置session KTF.set_session(sess)

 

3、指定GPU而且限制GPU用量

這個比較簡單,就是講上面兩種狀況連上便可。。

import os import tensorflow as tf import keras.backend.tensorflow_backend as KTF # 指定第一塊GPU可用 os.environ["CUDA_VISIBLE_DEVICES"] = "0" 
 config = tf.ConfigProto() config.gpu_options.allow_growth=True #不所有佔滿顯存, 按需分配 
 sess = tf.Session(config=config) KTF.set_session(sess)

 

 

 

參考連接:

http://www.javashuo.com/article/p-opepbrlg-kt.html

https://blog.csdn.net/Jdk_yxs/article/details/84061824

相關文章
相關標籤/搜索