如何使用训练好的Keras模型做预测且无需安装TensorFlow?
无需安装TensorFlow加载Keras模型进行预测的方案
一、转换模型格式规避TensorFlow依赖
由于你当前的.h5模型是TensorFlow Keras格式,加载时会绑定TensorFlow依赖,转换为轻量兼容格式是最直接的解决办法,以下是两种可行方案:
1. 转成纯Keras格式(基于Keras Core)
现在Keras已经独立为Keras Core,完全不依赖TensorFlow,体积小巧。你可以在自己有TensorFlow的环境里先转格式,再给同事使用:
- 你的环境操作(需要TensorFlow):
import keras_core as keras # 加载原.h5模型 model = keras.models.load_model("your_model.h5") # 保存为纯Keras专属格式 model.save("pure_keras_model.keras")
- 同事的环境操作(仅需装Keras Core):
pip install keras-core
import keras_core as keras # 直接加载模型,无需TensorFlow model = keras.models.load_model("pure_keras_model.keras") # 执行预测 predictions = model.predict(input_data)
这个方案的优势是API和原有Keras完全一致,同事不需要改代码逻辑,学习成本极低。
2. 转成ONNX格式(跨框架轻量推理)
ONNX是通用模型格式,搭配轻量的ONNX Runtime就能完成推理,完全脱离TensorFlow/Keras的训练依赖:
- 你的环境操作(需要TensorFlow和tf2onnx):
pip install tf2onnx
import tensorflow as tf # 先把.h5转成TensorFlow SavedModel格式 model = tf.keras.models.load_model("your_model.h5") model.save("temp_saved_model") # 再转成ONNX格式 !python -m tf2onnx.convert --saved-model temp_saved_model --output model.onnx
- 同事的环境操作(仅需装ONNX Runtime):
pip install onnxruntime
import onnxruntime as ort import numpy as np # 加载ONNX模型 sess = ort.InferenceSession("model.onnx") input_name = sess.get_inputs()[0].name output_name = sess.get_outputs()[0].name # 准备符合模型要求的输入数据(形状、 dtype要匹配) input_data = np.random.randn(1, 224, 224, 3).astype(np.float32) # 执行预测 predictions = sess.run([output_name], {input_name: input_data})
这个方案的优势是推理引擎体积极小,适合对环境要求苛刻的场景,且跨框架兼容性强。
二、直接加载原.h5模型的尝试(不推荐)
如果你的模型完全是用纯Keras(而非TensorFlow Keras)训练的,理论上可以让同事装Keras Core后直接加载,但实际中TensorFlow Keras保存的.h5模型几乎都会包含TensorFlow专属操作,大概率会报错。如果要尝试,代码如下:
import keras_core as keras try: model = keras.models.load_model("your_model.h5") except Exception as e: print("模型包含TensorFlow特有操作,必须转换格式")
三、方案选择建议
- 优先选纯Keras格式转换:操作简单,API兼容原有代码,同事上手最快。
- 追求极致轻量选ONNX格式:完全脱离训练框架依赖,推理速度也有保障。
内容的提问来源于stack exchange,提问作者lmhamilt
相关产品推荐
相关产品推荐

