tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.的一种解决方法
2021-03-23
使用tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)出現(xiàn)這個(gè)錯(cuò)誤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報(bào)告為UnknownError,大概意思為無(wú)法獲取卷積算法,可能的原因是cuDNN未初始化。
電腦為gtx1050 4GB,tensorflow版本為2.1.0,CUDA版本為10.1,cudnn為7.6.5
在開(kāi)始正式的訓(xùn)練時(shí)我將搭建的網(wǎng)絡(luò)代碼輸入了python Console,然后在正式訓(xùn)練的時(shí)候就出現(xiàn)了這個(gè)錯(cuò)誤,經(jīng)過(guò)排查是因?yàn)閜ython console沒(méi)有關(guān)閉。原控制臺(tái)引用了代碼中的網(wǎng)絡(luò),盡管沒(méi)有在控制臺(tái)中訓(xùn)練,但是可能控制臺(tái)中加載網(wǎng)絡(luò)的時(shí)候就調(diào)用了cudnn,在正式訓(xùn)練的時(shí)候這邊的網(wǎng)絡(luò)就無(wú)法加載到cudnn,把控制臺(tái)關(guān)了重新開(kāi)起來(lái)就可以正常跑代碼了,這是這個(gè)UnknownError的一種原因,可能還有其他原因。
另外,在訓(xùn)練一個(gè)網(wǎng)絡(luò)的時(shí)候,如果新開(kāi)一個(gè)窗口訓(xùn)練其他的網(wǎng)絡(luò),原來(lái)的這個(gè)網(wǎng)絡(luò)就會(huì)卡住從而無(wú)法繼續(xù)訓(xùn)練,盲猜還是cudnn的占用問(wèn)題,似乎一塊gpu上只能由一個(gè)程序調(diào)用cudnn,如果當(dāng)前cudnn被一個(gè)程序調(diào)用,其他程序好像就用不了cudnn,或者是搶占從而導(dǎo)致先前的程序無(wú)法繼續(xù)調(diào)用cudnn,這種情況在訓(xùn)練、預(yù)測(cè)和衡量模型時(shí)都會(huì)出現(xiàn),具體原理我不清楚,但是保持一段時(shí)間內(nèi)只有一個(gè)程序使用cudnn確實(shí)能避免上述問(wèn)題
?
總結(jié)
以上是生活随笔為你收集整理的tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm.的一种解决方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 8g ubuntu 树莓派4b_树莓派4
- 下一篇: ElasticSearch highli