首页 > 解决方案 > InvalidArgumentError:没有注册 OpKernel 来支持 Op 'CudnnRNN'

问题描述

我按照此处提供的步骤操作:https : //www.tensorflow.org/install/gpu 安装适用于我的 gpu 的 tensorflow,并使用 cuDNN SDK 但由于某些原因我仍然无法使用它,我仍然得到这个错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'CudnnRNN' used by node sequential/cu_dnnlstm/CudnnRNN (defined at cudrnn.py:27) with these attrs: [input_mode="linear_input", T=DT_FLOAT, direction="unidirectional", rnn_mode="lstm", seed2=0, is_training=true, seed=0, dropout=0]
Registered devices: [CPU, XLA_CPU, XLA_GPU]
Registered kernels:
  device='GPU'; T in [DT_DOUBLE]
  device='GPU'; T in [DT_FLOAT]
  device='GPU'; T in [DT_HALF]

即使 GPU 已注册,但 tensorflow 声称他们找不到 OpKernel。

我在用:

张量流GPU 1.14.0

库达 10.0

Ubuntu 18.04

PS:我可以使用 tensorflow 运行其他代码,通过检查 nvidia-smi 我可以看到 GPU 正在被实际使用。

谁能帮我知道我为什么会遇到这个问题?

这是我要运行的代码:

model = tf.keras.Sequential([
    tf.keras.layers.CuDNNLSTM(
        3,
        return_sequences=False),
    tf.keras.layers.Dense(1)
])

model.compile(
    optimizer=tf.keras.optimizers.Adam(0.1, decay=0.003), 
    loss=tf.keras.losses.mse)

model.fit(train_x, train_y, epochs=100, validation_split=0, shuffle=False)

标签: pythonpython-3.xtensorflowgpu

解决方案


您的注册设备显示XLA_GPU哪个是优化的编译器,但与GPU您使用的 tensorflow 库所期望的不同,

您可以检查几种解决方法,


推荐阅读