TensorFlow Keras 模型序列化指南 📁

模型序列化是保存和加载Keras模型的核心功能,支持多种格式与场景。以下是关键方法与注意事项:

1. 模型保存与加载

  • HDF5格式(推荐)

    model.save("model.h5")  # 保存模型
    model = keras.models.load_model("model.h5")  # 加载模型
    
    模型保存
  • SavedModel格式(TF2默认)

    tf.saved_model.save(model, "saved_model_dir")  # 保存
    loaded = tf.saved_model.load("saved_model_dir")  # 加载
    

    ✔️ 适合部署与跨框架兼容,详见SavedModel文档

2. 配置文件保存

  • 通过JSON/YAML保存模型结构:

    json_config = model.to_json()  # 转换为JSON字符串
    with open("model.json", "w") as f:
        f.write(json_config)
    
    JSON配置
  • 模型权重单独保存

    model.save_weights("weights.h5")  # 保存权重
    model.load_weights("weights.h5")  # 加载权重
    

3. 序列化模型对象

  • 使用pickle序列化(需注意依赖兼容性):
    import pickle
    with open("model.pkl", "wb") as f:
        pickle.dump(model, f)
    
    ⚠️ 仅适用于简单模型,复杂模型建议使用HDF5或SavedModel。

4. 自定义层与模型的序列化

  • 自定义层需实现get_config方法:
    class CustomLayer(keras.layers.Layer):
        def get_config(self):
            return {"custom_attribute": self.custom_attribute}
    
  • 模型需定义from_config方法以支持反序列化。

5. 模型格式转换

  • HDF5转SavedModel:
    tf转化工具 --input_model model.h5 --output_saved_model saved_model_dir
    
    🔄 参考模型格式转换指南获取完整工具链。

📌 扩展阅读
了解更多信息关于Keras模型的其他序列化策略。