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