错误:
UnknownError:无法获得卷积算法。这可能是由于cuDNN无法初始化,因此请尝试查看是否有警告日志消息已打印在上方。 [Op:Conv2D]
用于软件包安装的命令:
conda install -c anaconda keras-gpu
已安装:
keras-gpu 2.2.4 0
tf.test.is_gpu_available()
返回True
UnknownError:无法获得卷积算法。这可能是由于cuDNN无法初始化,因此请尝试查看是否有警告日志消息已打印在上方。 [Op:Conv2D]
通常,此问题是由于所安装的CUDA与cuDNN驱动程序不兼容而出现的。请参考Linux和CPU的经过测试的构建配置。
如果tf.test.is_gpu_available()
返回True
表示安装没有问题。
因此,在下一步中,您可以通过允许GPU内存增长来尝试GPU内存资源管理。
这可以通过调用tf.config.experimental.set_memory_growth
来完成,它尝试仅分配运行时分配所需的GPU内存:开始分配的内存很少,并且随着程序的运行和需要更多的GPU内存,我们扩展分配给TensorFlow进程的GPU内存区域。
要为特定GPU打开内存增长,请在分配任何张量或执行任何操作之前使用以下代码。
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
# Currently, memory growth needs to be the same across GPUs
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
# Memory growth must be set before GPUs have been initialized
print(e)
启用内存增长的另一种方法是将环境变量TF_FORCE_GPU_ALLOW_GROWTH
设置为true
。此配置是特定于平台的。
在此方法中,将虚拟GPU设备配置为tf.config.experimental.set_virtual_device_configuration
,并对要在GPU上分配的总内存设置硬限制。
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
# Restrict TensorFlow to only allocate 1GB of memory on the first GPU
try:
tf.config.experimental.set_virtual_device_configuration(
gpus[0],
[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)])
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
# Virtual devices must be set before GPUs have been initialized
print(e)
有关更多详细信息,请参考here
这里的一个建议,您可以尝试安装tensorflow-gpu
而不是keras-gpu
。