You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在TensorFlow中使用DirectML调用AMD RX580显卡运行LSTM模型时遭遇CudnnRNN OpKernel未注册错误

解决AMD RX580 + TensorFlow DirectML下LSTM的CudnnRNN错误

看起来你踩了TensorFlow-DirectML搭配AMD GPU时的一个常见坑——咱们一步步拆解问题:

错误根源

你看到的InvalidArgumentError核心原因是:TensorFlow默认会优先调用NVIDIA专属的CuDNN优化LSTM实现(也就是报错里的CudnnRNN Op),但AMD RX580是通过DirectML后端运行的,完全不支持CuDNN。而你其他嵌入模型能正常跑,是因为那些模型没有用到依赖CuDNN的算子。

快速修复方案

只需要修改你的LSTM层定义,添加use_cudnn=False参数,强制TensorFlow使用通用的、兼容DirectML的LSTM实现:

# 替换你原来的LSTM层代码
model_LSTM_peso.add(LSTM(
    n_neurons,
    batch_input_shape=(n_batch,X.shape[1], X.shape[2]),
    stateful=True,
    use_cudnn=False  # 关键:禁用CuDNN依赖,切换到通用实现
))

可选的额外调整

如果修改后出现激活函数相关的警告或小问题,可以显式指定recurrent_activation='sigmoid'——因为CuDNN版LSTM默认用hard_sigmoid,而通用版默认是sigmoid,明确指定能避免潜在的不一致:

model_LSTM_peso.add(LSTM(
    n_neurons,
    batch_input_shape=(n_batch,X.shape[1], X.shape[2]),
    stateful=True,
    use_cudnn=False,
    recurrent_activation='sigmoid'
))

为什么其他模型没问题?

你提到嵌入模型能正常运行,这说明你的TensorFlow-DirectML环境配置完全正确——DirectML已经成功识别并调用了你的RX580显卡。只是LSTM层默认走了NVIDIA专属的优化路径,咱们把它掰回通用路径就好。

内容的提问来源于stack exchange,提问作者Rodrigo Oviedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:42:35