加载Keras模型时报TypeError:is_legacy_optimizer参数无效求助
解决加载Keras h5模型时的
TypeError: is_legacy_optimizer is not a valid argument错误 这个错误是因为保存模型时的TensorFlow/Keras版本和当前加载时的版本不匹配,新旧版本的优化器API存在差异——旧版本保存的模型里的优化器参数,在新版本的optimizer_experimental.Optimizer中不被支持。
下面是几种可行的解决办法:
跳过编译加载,重新编译模型
如果不需要保留原训练时的优化器状态,可以加载模型时指定compile=False,之后手动重新编译:from tensorflow.keras.models import load_model model_path = "model/classifier.h5" # 不编译加载模型 model = load_model(model_path, compile=False) # 根据你的任务需求重新编译,示例用Adam优化器 model.compile(optimizer='adam', loss='your_loss_function', metrics=['accuracy'])匹配原模型保存时的TensorFlow版本
要是需要保留原优化器的训练状态,建议安装和保存模型时完全一致的TensorFlow版本,比如原版本是2.8.0,就执行:pip install tensorflow==2.8.0转换为SavedModel格式加载
若能在旧版本环境中操作,先加载原h5模型,转存为TensorFlow推荐的SavedModel格式,再用新版本加载:# 旧版本环境中执行 from tensorflow.keras.models import load_model model = load_model("model/classifier.h5") model.save("model/classifier_savedmodel") # 新版本环境中加载 model = load_model("model/classifier_savedmodel")SavedModel格式的兼容性更强,能有效减少版本间的API适配问题。
内容的提问来源于stack exchange,提问作者zerro
相关产品推荐
相关产品推荐

