我已经成功地将LSTM作为第一层运行了该模型。但是出于好奇,我将LSTM替换为CuDNNLSTM。 但是在model.fit之后,它回复了以下错误消息:
UnknownError: Fail to find the dnn implementation.
[[{{node cu_dnnlstm_5/CudnnRNN}} = CudnnRNN[T=DT_FLOAT, _class=["loc:@training_2/Adam/gradients/cu_dnnlstm_5/CudnnRNN_grad/CudnnRNNBackprop"], direction="unidirectional", dropout=0, input_mode="linear_input", is_training=true, rnn_mode="lstm", seed=87654321, seed2=0, _device="/job:localhost/replica:0/task:0/device:GPU:0"](cu_dnnlstm_5/transpose, cu_dnnlstm_5/ExpandDims_1, cu_dnnlstm_5/ExpandDims_1, cu_dnnlstm_5/concat_1)]]
[[{{node metrics_3/mean_squared_error/Mean_1/_1877}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_4852_metrics_3/mean_squared_error/Mean_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
我已经在此discussion上尝试过TestCudnnLSTM()并成功通过了测试:
Keras version: 2.2.4 Tensorflow version: 1.12.0 Creating Model _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= cu_dnnlstm_1 (CuDNNLSTM) (None, 1000, 1) 16 ================================================================= Total params: 16 Trainable params: 16 Non-trainable params: 0 _________________________________________________________________ None Model compiled
似乎在模型拟合期间出现了问题。但是我不知道到底是什么问题?
答案 0 :(得分:23)
对于TensorFlow v2,一种解决方案是-
import tensorflow as tf
physical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], enable=True)
然后您也可以使用keras模型-
from tensorflow.keras.models import Model
此解决方案对我有用,它仅支持一个GPU的内存增长。
答案 1 :(得分:2)
如果在安装Keras NN时遇到此错误,请在导入时输入此代码
from keras.backend.tensorflow_backend import set_session
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
set_session(sess)
答案 2 :(得分:1)
当我将tensorflow更新为1.12时,我遇到了同样的问题。将我的CuDNN版本从7更新到7.5后,错误得到解决。我按照以下url中提到的步骤更新了CuDNN版本(注意:链接中提到的步骤用于安装CUDNN,但同样适用于更新)
https://jhui.github.io/2017/09/07/AWS-P2-CUDA-CuDNN-TensorFlow/
答案 3 :(得分:0)
请确保您使用的Nvidia驱动程序版本与所使用的CUDA版本相符。您可以在这里查看。 https://docs.nvidia.com/deploy/cuda-compatibility/index.html#binary-compatibility
我正在使用CUDA 9.0,但使用的Nvidia驱动程序少于384.81。将Nvidia驱动程序更新为更新的驱动程序对我来说解决了这个问题。
答案 4 :(得分:0)
在tensorflow 2.0中,我运行RNN LSTM模型时遇到相同的错误,原因是由于cuDNN的版本较低。在tensorflow gpu要求页面中,建议具有
cuDNN SDK >= 7.4.1.
您可以在https://www.tensorflow.org/install/gpu
中了解更多详细信息在Tensorflow Reddit论坛中提问
答案 5 :(得分:0)
我在虚拟环境中使用conda安装了tensorflow和keras,并解决了这个问题。
conda install tensorflow
conda install keras
答案 6 :(得分:0)
我建议检查是否有任何其他内核导入了 tensorflow 或 keras。如果是,请关闭该内核 - 即使它不忙。它解决了我的问题。
答案 7 :(得分:0)
还要检查您的应用程序使用的 CUDA 版本是否存在 cuDNN。
升级 tensorflow 会导致它使用另一个 CUDA 版本
例如 tensorflow-2.3 使用 CUDA 10.1 但 tensorflow-2.5 使用 11.2
我在 Windows 中遇到了同样的错误,我不得不将最新的 cuDNN DLL 复制到“c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2”文件夹中