运行DeepNovo时报ImportError:无法导入rnn_cell_impl如何解决
问题解决方案
报错的根本原因是你使用的TensorFlow 1.0.0版本路径结构和DeepNovo代码要求的不匹配:
rnn_cell_impl模块从TensorFlow 1.1版本才开始被移入tensorflow.python.ops路径下,1.0版本中该模块位于contrib包路径下。
可行解决方案
- 方案1:升级TensorFlow到适配版本
推荐升级到TensorFlow 1.2~1.4版本(既包含对应路径的rnn_cell_impl模块,也兼容Python 2.7和DeepNovo的接口逻辑),执行以下命令即可:
如果你习惯用pip安装,也可以执行:conda install tensorflow=1.4.0pip install tensorflow==1.4.0 - 方案2:修改代码导入语句(无需升级TensorFlow)
打开/Data2/HJE/DeepNovo/deepnovo_model.py文件,找到第43行的导入代码:
将其替换为以下内容即可:from tensorflow.python.ops import rnn_cell_impl
替换后保存文件重新运行脚本,绝大多数情况下可以直接兼容后续的RNN相关接口调用。import tensorflow.contrib.rnn as rnn_cell_impl - 方案3:适配全量接口(修改导入后仍有报错时使用)
如果修改导入语句后仍出现其他RNN相关的接口不存在报错,逐行将代码中所有rnn_cell_impl.xxx的调用,替换为tf.contrib.rnn.xxx即可,两种路径下的核心RNN类(LSTMCell、GRUCell等)接口逻辑完全一致。
内容的提问来源于stack exchange,提问作者user16685540
相关产品推荐
相关产品推荐

