UnknownError: Fail to find the dnn implementation.


今天在使用tensorflow-gpu跑一個模型的時候遇到了下述的UnknownError:

經過在網上查詢解決方案之后,弄明白是tensorflow-gpu顯存分配的問題,參考的博客是

# https://blog.csdn.net/weixin_44545603/article/details/103322446

# https://blog.csdn.net/m0_49376111/article/details/115336420?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.vipsorttest&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.vipsorttestz

  最終我的解決方法是:

# 錯誤代碼
from __future__ import print_function
import tensorflow as tf
import numpy as np
import matplotlib        
import matplotlib.pyplot as plt
import pandas as pd
from tensorflow.keras import layers
%matplotlib inline


# 解決之后的代碼
from __future__ import print_function
import tensorflow as tf

physical_devices = tf.config.experimental.list_physical_devices("GPU") 
if len(physical_devices) > 0:
    tf.config.experimental.set_memory_growth(physical_devices[0], True)
    logical_devices = tf.config.list_logical_devices("GPU")


import numpy as np
import matplotlib        
import matplotlib.pyplot as plt
import pandas as pd
from tensorflow.keras import layers
%matplotlib inline

  解釋一下上述方法,tensorflow中用physical_devices 和 logical_devices分別表示 機器本身的gpu以及在使用過程中的gpu(這個使用過程中的gpu 解釋一下就是比如你兩塊顯卡 其中將一塊顯卡分成了兩部分 那么就是 2 physical_devices 3 logical_devices),通過 tf.config.experimental.list_physical_devices 返回一個列表 來顯示機器本身GPU的一些信息。tf.config.experimental.set_memory_growth() 這個函數為調用哪一塊GPU,在tensorflow中如果你的機器只有一塊顯卡,那么它會默認調用全部的顯存,這個是因為tensorflow本身為了防止顯存碎片的出現(顯存碎片 memory fragemnet就是指計算機不能利用的那部分內存),提高顯卡的利用率。同時tensorflow它也提供了 設置顯卡使用的顯存機制 以及多塊顯卡使用的API,這個之后再寫篇使用的blog。最后加上 logical_devices=tf.config.list_logical_devices("GPU")  就ok了。

需要注意的是哈,補充的那一部分代碼一定要放到 import tensorflow as tf 之后,因為 如果不這樣的話 會出現另外一個問題 就是initiallized 初始化的問題,猜測是因為我在一個base虛擬環境下運行的?(我的tensorflow安裝在base環境中)這個之后有時間可以在嘗試一下。另外,如果還遇到初始化的問題,這可以 重新運行代碼哈!~~

最后附一下我的配置:

系統 win10

顯卡 GTX1660

tensorflow 2.3.0

cudatoolkit == 10.1 

cudnn == 7.6.5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM