导入talos模块报错Cannot import name 'SGD' from 'keras.optimizers'问题
该错误由版本兼容性冲突导致:
talos 0.4.8为早期版本,默认从独立Keras包中导入优化器;而TensorFlow 2.x版本已将Keras整合为tensorflow.keras子模块,你环境中的独立Keras 2.2.4与TensorFlow 2.6.0本身也存在适配问题,最终触发talos内部导入失败。
你可以根据自己的场景选择以下任意一种方案:
- 方案1:临时别名映射(无需改环境/源码,快速生效)
在你代码的最开头、导入talos之前加入如下代码,将keras.optimizers直接映射为tensorflow.keras.optimizers:
import sys from tensorflow.keras import optimizers sys.modules['keras.optimizers'] = optimizers import talos
方案2:降级TensorFlow版本(适配原生talos 0.4.8逻辑)
talos 0.4.8原生适配TensorFlow 1.15.x版本,直接执行命令降级即可:pip install tensorflow==1.15.5
若使用GPU版本则执行:pip install tensorflow-gpu==1.15.5方案3:修改talos内部导入逻辑
找到Python环境中talos的安装路径(通常为site-packages/talos/),搜索所有包含from keras.optimizers import的文件(一般在utils/keras_utils.py或模型相关文件中),将语句统一替换为from tensorflow.keras.optimizers import,保存后重新导入即可生效。方案4:升级talos到适配TF2.x的版本
最新版talos已原生支持TensorFlow 2.x的tensorflow.keras导入逻辑,直接执行升级命令即可:pip install --upgrade talos
注意:新版本talos的API与0.4.8存在差异,升级后你之前基于旧版talos编写的业务代码可能需要小幅调整。
内容的提问来源于stack exchange,提问作者hans

