tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.的一种解决方法

2021-03-23

使用tensorflow构建卷积神经网络训练时出现这个错误tensorflow.python.framework.errors_impl.UnknownError:  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.

tensorflow报告为UnknownError,大概意思为无法获取卷积算法,可能的原因是cuDNN未初始化。

电脑为gtx1050 4GB,tensorflow版本为2.1.0,CUDA版本为10.1,cudnn为7.6.5

在开始正式的训练时我将搭建的网络代码输入了python Console,然后在正式训练的时候就出现了这个错误,经过排查是因为python console没有关闭。原控制台引用了代码中的网络,尽管没有在控制台中训练,但是可能控制台中加载网络的时候就调用了cudnn,在正式训练的时候这边的网络就无法加载到cudnn,把控制台关了重新开起来就可以正常跑代码了,这是这个UnknownError的一种原因,可能还有其他原因。

另外,在训练一个网络的时候,如果新开一个窗口训练其他的网络,原来的这个网络就会卡住从而无法继续训练,盲猜还是cudnn的占用问题,似乎一块gpu上只能由一个程序调用cudnn,如果当前cudnn被一个程序调用,其他程序好像就用不了cudnn,或者是抢占从而导致先前的程序无法继续调用cudnn,这种情况在训练、预测和衡量模型时都会出现,具体原理我不清楚,但是保持一段时间内只有一个程序使用cudnn确实能避免上述问题

 

你可能感兴趣的:(tensorflow,深度学习,神经网络)