tensorflow 报错: Process finished with exit code -1073740791 (0xC0000409)

____tz_zs

报错场景:

我是在训练神经网络模型,同时运行检测的会话检测其正确率时报错(ps:在cpu版本的tensorflow上不会报错)

Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 965M, pci bus id: 0000:01:00.0)
could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
error retrieving driver version: Unimplemented: kernel reported driver version not implemented on Windows
could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms) 

Process finished with exit code -1073740791 (0xC0000409)


报错原因(这是我的理解,不一定正确):

由以上报错信息可知,程序是在创建gpu线程时报错,而程序的进程结束代码 exit code -1073740791 (0xC0000409) 所以我推测与堆栈溢出相关。(Windows NTSTATUS Values 进程终止消息标识符:http://blog.csdn.net/tz_zs/article/details/77427842 )

gpu已经被训练神经网络的会话占用了,运行监测会话时,没有gpu内存给他去运行。


解决方法:

方法1:

为会话按比例分配gpu(设置每个GPU应该拿出多少容量给进程使用)

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.2
with tf.Session(config=config) as sess:
    .......

另外,分配时需注意,检测神经网络准确率的数据集是同时(而不是像训练时是分batch的)放入神经网络模型中运行的,要消耗大量资源。所以要分配多一些,不然会内存溢出。

方法2:

让其自动的分配(刚一开始分配少量的GPU容量,然后按需慢慢的增加,由于不会释放内存,所以会导致碎片)

config = tf.ConfigProto()  
config.gpu_options.allow_growth = True  
with tf.Session(config=config) as sess:  
    .......  

查阅的资料:

http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/using_gpu.html

https://www.zhihu.com/question/52253560

http://blog.csdn.net/u012436149/article/details/53837651



写博客时的注意:

从草稿箱删除不要的草稿文章时,注意先刷新草稿箱。

我是在草稿箱的一个版本上编辑然后发表文章,由于没有刷新草稿箱页面,就直接把草稿箱的文章全删除了,导致已经发表的文章也被删除

( ̄ε(# ̄) Σ


你可能感兴趣的:(#,TensorFlow)