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)
模型权重单独保存:
model.save_weights("weights.h5") # 保存权重 model.load_weights("weights.h5") # 加载权重
3. 序列化模型对象
- 使用
pickle
序列化(需注意依赖兼容性):
⚠️ 仅适用于简单模型,复杂模型建议使用HDF5或SavedModel。import pickle with open("model.pkl", "wb") as f: pickle.dump(model, f)
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模型的其他序列化策略。