【解決方案】tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm

背景

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. [Op:Conv2D]
在這裏插入圖片描述
更換了tensorflow版本,在使用tensorflow-gpu 2.0.1時候,遇到的這個問題。
環境:
tensorflow-gpu 2.0.1 (安裝了anaconda,使用的pip安裝,清華鏡像)
Windows 10
CUDA 10.0
cuDNN 7.6.4

解決方法

有的人認爲,利用pip安裝的包,會直接幫你安裝好相關依賴包,例如我在本地上事先安裝好cudnn和cuda,但pip install tensorflow-gpu的時候會再次幫你裝一個cuda 和 cudnn,這個時候cuda和cudnn的版本會比較低,造成與tf-gpu版本不兼容,他們試着把conda種的cuda和cudnn卸載掉,然後確實也成功了。但是我在conda list看cuda和cudnn版本的時候,他們與tf-gpu的版本實際上是兼容的。於是找到了下面這個方法。似乎與顯卡內存分配和Session交互方式有關聯??

在代碼前面加一段

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

2020.4.9更新一下

今天又遇到了這個問題,是在跑Yolov3-keras的時候,我使用了1個分類的行人數據,裏面又500+張標註好的行人數據,然後epoch有500,報錯了顯示說run out of memory,這個時候我把batch_size從16調爲了4,還是同樣的錯誤,又調整爲1,這時候就不報錯了。

參考:https://github.com/tensorflow/tensorflow/issues/24828

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章