cts*_*tat 2 python keras data-science tensorflow
我训练了一个 LSTM 模型,并尝试对所有测试观察结果进行预测。然而,keras 需要很长时间model.predict才能计算所有预测。有没有办法加快这个过程?假设每个预测有两个特征(x1 和 x2)。每个特征的长度(x1 & x2)都是33。如[32,1,17,.......,0]。我需要进行 100 万次预测。我的代码是
predictions = np.argmax(make.predict([x1, x2]), axis = -1)
Run Code Online (Sandbox Code Playgroud)
有什么想法可以加快速度吗?非常感谢
实际上,Keras 模型是执行、训练、再训练、微调和总结以及模型明智更改的主要架构,在进行预测和部署时,我们需要使用frozen inference graph of keras model.
我们还应该Frozen graph optimization使用TensorRT、OpenVINO和许多其他模型优化技术。
在这里,我添加了从 Keras 模型转换图形的代码片段
冻结图表的链接
从 TensorFlow 2.x Frozen Graph 保存、加载和推理
看起来可能很长,但它的实际方法
#冻结图
# Convert Keras model to ConcreteFunction
full_model = tf.function(lambda x: model(x))
full_model = full_model.get_concrete_function(
tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype))
# Get frozen ConcreteFunction
frozen_func = convert_variables_to_constants_v2(full_model)
frozen_func.graph.as_graph_def()
# Save frozen graph from frozen ConcreteFunction to hard drive
tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
logdir="./frozen_models",
name="frozen_graph.pb",
as_text=False)
Run Code Online (Sandbox Code Playgroud)
#加载冻结图
# Load frozen graph using TensorFlow 1.x functions
with tf.io.gfile.GFile("./frozen_models/frozen_graph.pb", "rb") as f:
graph_def = tf.compat.v1.GraphDef()
loaded = graph_def.ParseFromString(f.read())
# Wrap frozen graph to ConcreteFunctions
frozen_func = wrap_frozen_graph(graph_def=graph_def,
inputs=["x:0"],
outputs=["Identity:0"],
print_graph=True)
Run Code Online (Sandbox Code Playgroud)