无法创建 cudnn 句柄:CUDNN 状态内部错误

007*_*red 7 algorithm cudnn

我正在尝试在 python 3 中创建 machinelearning。但是后来我尝试编译我的代码,我在 Cuda 10.0/cuDNN 7.5.0 中遇到了这个错误,有人可以帮我解决这个问题吗?

RTX 2080

我在:Keras (2.2.4) tf-nightly-gpu (1.14.1.dev20190510)

无法创建 cudnn 句柄:CUDNN_STATUS_INTERNAL_ERROR

代码错误: 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.

这是我的代码:

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(1, activation='softmax'))

model.summary()

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model.fit(x, y, epochs=1, batch_size=n_batch)
Run Code Online (Sandbox Code Playgroud)

当分配具有形状 [24946,32,48,48] 的张量并通过分配器 GPU_0_bfc 在 /job:localhost/replica:0/task:0/device:GPU:0 上键入 float 时出现 OOM

Rok*_*jic 7

使用 Tensorflow 2.0、CUDA 10.0 和 CUDNN 7.5,以下对我有用:

gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)
Run Code Online (Sandbox Code Playgroud)

还有一些其他答案(例如 venergiac 的答案)使用过时的 Tensorflow 1.x 语法。如果您使用的是最新的 tensorflow,则需要使用我在此处提供的代码。

如果您收到以下错误:

Physical devices cannot be modified after being initialized
Run Code Online (Sandbox Code Playgroud)

那么问题将通过将gpus = tf.config... 行直接放在您导入 tensorflow 的下方来解决,即

import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)
Run Code Online (Sandbox Code Playgroud)


ven*_*iac 2

有两种可能的解决方案。

分配GPU内存的问题

添加以下代码

import tensorflow as tf
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.5)
config = tf.ConfigProto(gpu_options=gpu_options)
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
Run Code Online (Sandbox Code Playgroud)

还检查这个问题

您的 NVIDIA 驱动程序有问题

正如那里发布的,您需要使用 ODE 驱动程序升级您的 NVIDIA 驱动程序。

请检查NVIDIA 文档以了解驱动程序版本