You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需安装TensorFlow即可加载用于Django REST后端的Keras模型?

问题解答

首先明确:仅靠Keras无法加载你的模型。原因很简单——现在的Keras(包括你代码里用的独立Keras包)本质是一个高层API,它的底层计算依赖TensorFlow作为后端。你训练的模型里用到了LSTM这类层,这些层的实现逻辑完全依赖TensorFlow的核心库,所以加载时必须要有TensorFlow环境,哪怕你只装了Keras,运行时也会自动去调用TensorFlow的底层代码,找不到就会报ModuleNotFoundError。

你试过的pickle、joblib、model.save()本质都是保存了模型的结构和权重,但模型的层定义、运算逻辑还是绑定TensorFlow的,所以换无TensorFlow的环境肯定跑不起来。

如果不想在服务器装完整的重型TensorFlow,给你几个可行的轻量化方案:

方案1:转换成TensorFlow Lite格式

TensorFlow Lite是专门为部署优化的轻量级运行时,体积远小于完整TensorFlow,适合后端部署。

转换步骤(在训练环境执行):

import tensorflow as tf
from keras.models import load_model

# 加载训练好的h5模型
model = load_model('model.h5')
# 转换为TFLite格式
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
# 保存文件
with open('model.tflite', 'wb') as f:
    f.write(tflite_model)

服务器端加载(仅需安装tensorflow-lite):

import tflite_runtime.interpreter as tflite
import numpy as np

# 加载模型
interpreter = tflite.Interpreter(model_path='model.tflite')
interpreter.allocate_tensors()

# 获取输入输出张量
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# 推理示例(假设输入是符合模型要求的numpy数组)
input_data = your_input_array.astype(np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])

方案2:转换成ONNX格式,用ONNX Runtime加载

ONNX是跨框架的模型格式,ONNX Runtime是轻量的推理引擎,性能不错且体积小。

转换步骤(训练环境执行):

先安装转换工具:

pip install tf2onnx

然后执行转换:

import tensorflow as tf
from keras.models import load_model

model = load_model('model.h5')
# 先导出为TensorFlow SavedModel格式
tf.saved_model.save(model, 'saved_model')
# 转换为ONNX格式
!python -m tf2onnx.convert --saved-model saved_model --output model.onnx

服务器端加载(仅需安装onnxruntime):

import onnxruntime as rt
import numpy as np

sess = rt.InferenceSession('model.onnx')
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name

# 推理示例
input_data = your_input_array.astype(np.float32)
predictions = sess.run([output_name], {input_name: input_data})

方案3:安装精简版TensorFlow

如果不想转格式,也可以在服务器安装TensorFlow CPU版,跳过GPU相关组件,体积会小很多。安装命令:

pip install tensorflow-cpu

这样就能直接用load_model加载你的h5模型,不需要改代码,整体体积比带GPU支持的TensorFlow小不少。

内容的提问来源于stack exchange,提问作者vahidkoohkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:01:17