tf.keras.experimental无export_saved_model属性AttributeError报错求解
报错原因
tf.keras.experimental.export_saved_model和配套的load_from_saved_model是TensorFlow 1.x时期的实验性接口,从TensorFlow 2.2版本开始这两个接口就被正式移除,你当前安装的是TF2.x版本,调用不存在的接口自然会触发属性错误。
修复步骤
直接替换为TF2.x标准的模型保存/加载API即可,你之前传入的自定义对象参数不需要改动:
- 保存模型时,不再调用experimental模块下的方法,直接用模型实例自带的
save()方法 - 加载模型时,调用
tf.keras.models.load_model()接口即可
修正后可运行代码
SHOE_SAVED_MODEL = "saved_models/shoe" # 保存模型 model.save( SHOE_SAVED_MODEL, # 后续需要继续微调模型就保持include_optimizer=True,仅做推理可以设为False减小模型体积 include_optimizer=True ) # 加载模型,原有custom_objects配置保留即可 shoe_model = tf.keras.models.load_model( SHOE_SAVED_MODEL, custom_objects={'KerasLayer': hub.KerasLayer} )
补充说明
- 由于模型中使用了TensorFlow Hub提供的
KerasLayer自定义层,加载时必须保留custom_objects参数传值,否则会出现自定义层无法解析的报错 - 保存模型时不需要提前手动创建目标路径文件夹,接口会自动生成对应目录结构
- 如果使用TF2.11以上版本,也可以将保存路径改为以
.keras为后缀的文件路径,使用官方新的原生Keras格式存储,加载逻辑完全一致
内容的提问来源于stack exchange,提问作者Rosemarie Edang
相关产品推荐
相关产品推荐

