Colab中tf.keras 2.4导入旧模块失败,混用tf与tf.keras报错如何解决?
解决方案
1. 校准Colab环境依赖
先执行以下命令重装匹配版本的依赖包,执行完成后必须重启Colab运行时再执行后续代码,否则版本不会生效:
!pip uninstall -y tensorflow keras !pip install tensorflow==2.4.0 keras==2.4.0 h5py==2.10.0
2. 统一导入来源
全程使用独立Keras包,删除所有代码中tf.keras相关的导入语句,所有Keras组件(模型、层、回调、损失、优化器等)统一从keras模块导入,完全避免两类Keras混用。
3. 修复过时模块命名
Keras 2.4版本已经移除了objectives模块,相关功能全部合并到losses模块下,对原代码做如下替换即可:
- 原导入语句
from keras.objectives import XXX→ 替换为from keras.losses import XXX - 如果原代码大量使用
objectives别名调用,可以直接将导入改为import keras.losses as objectives,无需修改后续业务代码
完成以上操作后即可同时解决两类报错: AttributeError: 'ReduceLROnPlateau' object has no attribute '_implements_test_batch_hooks'报错本质是tf.keras和独立Keras组件混用导致,统一导入来源后直接修复ModuleNotFoundError: No module named 'tensorflow.keras.objectives是过时模块命名导致,替换为losses后即可修复
内容的提问来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

