Tensorflow cuDNN内核上的LSTM配置

Tensorflow cuDNN内核上的LSTM配置,tensorflow,keras,lstm,Tensorflow,Keras,Lstm,我正在尝试在谷歌Colab中使用gpu支持的自动编码器配置运行LSTM。但我得到以下警告: 警告:tensorflow:Layer lstm不会使用cuDNN内核,因为它不符合cuDNN内核标准。在GPU上运行时,它将使用通用GPU内核作为后备 通用GPU内核明显比cuDNN内核慢。所以我搜索了解决方案,并在这里找到了()针对LSTM单元的cuDNN内核需求。具体而言: activation == tanh recurrent_activation == sigmoid recurrent_dr

我正在尝试在谷歌Colab中使用gpu支持的自动编码器配置运行LSTM。但我得到以下警告:

警告:tensorflow:Layer lstm不会使用cuDNN内核,因为它不符合cuDNN内核标准。在GPU上运行时,它将使用通用GPU内核作为后备

通用GPU内核明显比cuDNN内核慢。所以我搜索了解决方案,并在这里找到了()针对LSTM单元的cuDNN内核需求。具体而言:

activation == tanh
recurrent_activation == sigmoid
recurrent_dropout == 0
unroll is False
use_bias is True
Inputs, if use masking, are strictly right-padded.
Eager execution is enabled in the outermost context.
我认为我在激活函数中发现了问题,该函数是“relu”,其他cuDNN要求是TF中的默认值。更新代码如下:

model = Sequential()
model.add(LSTM(200, activation='tanh',input_shape=(n_timesteps, n_features)))
model.add(RepeatVector(n_outputs))
model.add(LSTM(200, activation='tanh', return_sequences=True))
model.add(TimeDistributed(Dense(100, activation='relu')))
model.add(TimeDistributed(Dense(1)))
model.compile(loss='mse', optimizer='adam')
model.fit(train_x, train_y, epochs=epochs, batch_size=batch_size, verbose=verbose)
但在执行时,我收到了同样的警告,即cuDNN要求未得到满足。怎么了


TF:2.3.0

这里只是简单介绍一下,但您确定CuDNN已正确安装在此机器上吗?它可能需要安装在你的NVIDIA驱动程序之外,这取决于你的起点。看起来是这样的:!NVCC—V结果是NVCC:英伟达(R)CUDA编译器驱动版权(C)2005—2019英伟达公司,在Sunijuly28 19:07:16Y-PDTY2019 CUDA编译工具上建立,版本10.1,V1.1.243 <代码> NVCC < /Cord>是NVIDIA CUDA编译器,它不同于CUDNN。您可以在
/usr/lib/cuda/lib64
/usr/local/cuda-10.1/lib64
(取决于您的cuda版本)中查看文件
libcudnn.so
cudnn.h
,但您确定CuDNN已正确安装在此计算机上吗?它可能需要安装在你的NVIDIA驱动程序之外,这取决于你的起点。看起来是这样的:!NVCC—V结果是NVCC:英伟达(R)CUDA编译器驱动版权(C)2005—2019英伟达公司,在Sunijuly28 19:07:16Y-PDTY2019 CUDA编译工具上建立,版本10.1,V1.1.243 <代码> NVCC < /Cord>是NVIDIA CUDA编译器,它不同于CUDNN。您可以在
/usr/lib/cuda/lib64
/usr/local/cuda-10.1/lib64
(取决于您的cuda版本)中查看文件
libcudnn.so
cudnn.h
。请查看以下介绍和安装说明: