首页 > 其他 > 详细

UnknownError: Fail to find the dnn implementation.

时间:2021-05-11 16:29:01      阅读:39      评论:0      收藏:0      [点我收藏+]

今天在使用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

UnknownError: Fail to find the dnn implementation.

原文:https://www.cnblogs.com/wzmgg/p/14754398.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!