无法加载库 cudnn_cnn_infer64_8.dll。错误代码 126

Posted

技术标签:

【中文标题】无法加载库 cudnn_cnn_infer64_8.dll。错误代码 126【英文标题】:Could not load library cudnn_cnn_infer64_8.dll. Error code 126 【发布时间】:2021-12-21 00:57:47 【问题描述】:
Could not load library cudnn_cnn_infer64_8.dll. Error code 126
Please make sure cudnn_cnn_infer64_8.dll is in your library path!

当我尝试将 TensorFlow 与 GPU 一起使用时,我不断收到此错误,我已根据说明多次安装 CUDA、cuDNN 和所有驱动程序。但似乎没有任何效果。 如果我使用笔记本,那么 TensorFlow 使用 CPU,通过 VS 代码笔记本扩展,我可以使用 gpu,但是当我尝试将其作为普通 python 文件运行时,它会在第一个 epoch 停止会话。出现上述错误。

完整的终端输出:

Found 14630 validated image filenames belonging to 3 classes.
Found 1500 validated image filenames belonging to 3 classes.
2021-11-08 11:03:58.000354: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-11-08 11:03:58.603592: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 2775 MB memory:  -> device: 0, name: NVIDIA GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1        
Epoch 1/10
2021-11-08 11:04:07.306011: I tensorflow/stream_executor/cuda/cuda_dnn.cc:366] Loaded cuDNN version 8300
Could not load library cudnn_cnn_infer64_8.dll. Error code 126
Please make sure cudnn_cnn_infer64_8.dll is in your library path!
E:\MyWorkSpace\animal_detect>

代码sn-p:

import tensorflow as tf 
from tensorflow.keras.preprocessing.image import ImageDataGenerator 
from tensorflow.keras import layers 
from tensorflow.keras import Model 
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.vgg16 import VGG16
import pandas as pd
import numpy as np

train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
train_gen = ImageDataGenerator(rescale = 1./255.,rotation_range = 40, width_shift_range = 0.2, height_shift_range = 0.2, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True)
test_gen = ImageDataGenerator( rescale = 1.0/255. )
train_set = train_gen.flow_from_dataframe(train_df,x_col='loc',y_col='label',batch_size=20,target_size=(224,224))
test_set = train_gen.flow_from_dataframe(test_df,x_col='loc',y_col='label',batch_size=20,target_size=(224,224))
base_model = VGG16(input_shape = (224, 224, 3),
include_top = False,
weights = 'imagenet')
for layer in base_model.layers:
    layer.trainable = False
x = layers.Flatten()(base_model.output)
x = layers.Dense(512, activation='relu')(x)
x = layers.Dropout(0.5)(x)
x = layers.Dense(3, activation='sigmoid')(x)

model = tf.keras.models.Model(base_model.input, x)

model.compile(optimizer = tf.keras.optimizers.RMSprop(learning_rate=0.0001), loss = 'categorical_crossentropy',metrics = ['acc'])
vgghist = model.fit(train_set, validation_data = test_set, steps_per_epoch = 100, epochs = 10)

Jupyter-notebook、VS code notebook 扩展和普通的 python 文件使用了相同的代码

设备规格:

处理器:英特尔 i5 显卡:英伟达 Geforce 1050ti

Cuda 版本:11.5 cuDNN 版本:8.3

【问题讨论】:

***.com/q/66355477/681865 @talonmies 已经尝试过了,对我不起作用 【参考方案1】:

对于那些仍然有这个问题的人,请确保你也完成了this step:

下载、解压缩并将zlibwapi.dll 添加到您的系统路径。

我为此浪费了半个小时,所以你不必也这样做。祝你好运!

【讨论】:

谢谢,它成功了。我确实忽略了这个安装指南(那是我的错)。我已经为 cuda11.5 编译了 tf2.7,而 cudnn8.3 在很久以前就发生了变化,但是在将 zlibwapi.dll 添加到系统路径之前不能使用 cudnn8.3。虽然 zlibwapi. dll不影响cudnn8.2的使用,但会影响cudnn8.3的正确运行。 我认为这是最正确的解决方案,因为它包含在官方的 cuDNN 安装指南中。此外,无需降级 cuDNN 版本。 哇。在安装 dlib 时让 CuDNN 被接受有很多问题。在我设法安装它之后,这个 zlib 东西是阻止我的 python 脚本获取 cuDNN 的最后一个问题。谢谢。【参考方案2】:

和我一样的“错误”。即使我已经用“Cuda 版本:11.5 cuDNN 版本:8.3”重新编译了 tensorflow-gpu 2.6.0。 当我将 cudnn 版本更改为 8.2 但将 cuda 版本保持为 11.5 时,“错误”消失了。 (也需要重新编译) 所以我认为这个错误必须在“cuDNN”上。

请看下一个答案。效果很好。

【讨论】:

为我修好了,谢谢!我去了Download cuDNN v8.2.2 (July 6th, 2021), for CUDA 11.4 它也对我有用:下载并安装 CUDA Toolkit 11.5,然后下载不兼容的 cuDNN v8.2.4(2021 年 9 月 2 日),用于 CUDA 11.4,将文件放在正确的文件夹中,如docs.nvidia.com/deeplearning/cudnn/install-guide/index.html,然后voily,痛苦消失了! THX @小火车 谢谢!这对我也有帮助。我有 CUDA Toolkit 11.5 和 cuDNN v8.3.0。 @jib-fashr 为我工作。谢谢! 工作就像一个魅力!

以上是关于无法加载库 cudnn_cnn_infer64_8.dll。错误代码 126的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow:无法加载动态库“cudart64_110.dll”; dlerror: 未找到 cudart64_110.dll

Tensorflow GPU 无法加载动态库“cusolver64_10.dll”; dlerror: 未找到 cusolver64_10.dll

Microsoft PowerBI:无法加载安全库:krb5_64.dll

Mobilefirst 8.0 错误 IOS 推送通知。无法加载 netty_tcnative_aix_ppc_64、netty_tcnative_ppc_64、netty_tcnative

幽灵4J。 java.lang.UnsatisfiedLinkError:无法加载库“gsdll64”

无法加载共享库'db2app64.dll'