运行代码报错:module 'keras.layers.normalization' 无 'BatchNormalizationBase' 属性
报错原因
该错误由依赖包版本不兼容导致:
较新的TensorFlow/Keras版本将BatchNormalizationBase的实现路径从keras.layers.normalization迁移到了keras.layers.normalization.batch_normalization模块下,你导入的stellargraph、autokeras版本未适配该路径变更,仍然调用旧路径下的类,因此触发属性不存在报错。此前代码可正常运行是因为当时环境中的TensorFlow/Keras为适配的旧版本。
解决方案
可任选以下一种方式修复:
- 降级TensorFlow和Keras到适配版本
目前稳定版stellargraph最高适配TensorFlow 2.11.x版本,执行如下命令降级即可:pip install tensorflow==2.11.0 keras==2.11.0
降级完成后重新运行代码即可恢复正常。 - 临时补全旧路径映射
若不想降级TensorFlow,可在所有导入语句的最前方添加如下代码,手动给旧模块补全对应属性:import keras.layers.normalization from keras.layers.normalization.batch_normalization import BatchNormalizationBase keras.layers.normalization.BatchNormalizationBase = BatchNormalizationBase
内容的提问来源于stack exchange,提问作者muhammad
相关产品推荐
相关产品推荐

