使用Keras SimpleRNN搭建模型时出现NotImplementedError问题求助
问题根因
该报错为TensorFlow与Numpy版本不兼容导致。你使用的低版本TensorFlow的RNN层生成初始零状态时,会调用Numpy的prod方法计算张量形状乘积,此时传入的batch_size为动态计算的符号张量,高版本Numpy不支持直接将TensorFlow符号张量转为Numpy数组,因此触发报错。你之前尝试的1.18.5、1.20.1版本的Numpy均和当前环境的TensorFlow版本不适配。
解决方案
- 方案1:降级Numpy到适配版本
执行如下命令安装适配的1.19.5版本Numpy:pip install numpy==1.19.5
安装完成后重启Jupyter内核重新运行代码即可。 - 方案2:升级TensorFlow与Keras到兼容新版本
升级到2.8以上的匹配版本即可从框架层面修复该兼容问题,执行命令:pip install tensorflow==2.10 keras==2.10
升级后无需修改代码即可正常运行。 - 方案3:修正代码导入逻辑
不要混用独立Keras包和TensorFlow内置的Keras包,统一从TensorFlow下导入依赖,同时补全Dense层的导入,修正后代码如下:
from tensorflow.keras import models from tensorflow.keras.layers import SimpleRNN, Dense model = models.Sequential() model.add(SimpleRNN(units=32, input_shape=(1,4), activation="relu")) model.add(Dense(1)) model.summary()
内容的提问来源于stack exchange,提问作者Srinivas
相关产品推荐
相关产品推荐

