gpt4 book ai didi

c - 为什么在 TF2 中不推荐使用 convert_variables_to_constants()?

转载 作者:行者123 更新时间:2023-12-03 15:51:42 24 4
gpt4 key购买 nike

正如标题所说,为什么在 tensorflow 2 中不推荐使用 convert_variables_to_constants()?获取可保存模型以加载到下游独立应用程序以进行推理的简单替代方法是什么(在我的情况下,使用 C API)。

最佳答案

在 TF 2.x 中没有 tf.Session() ,这是在 TF 1.x 中构建卡住模型的必要组件,不再是 TF 2.0。
根据 TensorFlow 2.0.0 release description “删除了 freeze_graph 命令行工具;应该使用 SavedModel 代替卡住图。”所以,你应该使用 SavedModel只要。
但是,如果您仍然需要卡住图,您

# Save model to SavedModel format
tf.saved_model.save(model, "./models/simple_model")

# Convert Keras model to ConcreteFunction
full_model = tf.function(lambda x: model(x))
full_model = full_model.get_concrete_function(
x=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()

layers = [op.name for op in frozen_func.graph.get_operations()]
然后将其保存为卡住图。

Note: You would now be expected to load this frozen graph with TF 1.xfunctions,


tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
logdir="./frozen_models",
name="simple_frozen_graph.pb",
as_text=False)
然后加载这个模型( TF 1.x 代码)你会做 -
with tf.io.gfile.GFile("./frozen_models/simple_frozen_graph.pb", "rb") as f:
graph_def = tf.compat.v1.GraphDef()
loaded = graph_def.ParseFromString(f.read())
延迟减少了 freeze_graph对于应用程序和全精度权重存储在 SavedModel 中可能非常重要。可能是个问题。但是也有一些简单的方法可以解决这个问题,这超出了本问题的范围。

关于c - 为什么在 TF2 中不推荐使用 convert_variables_to_constants()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56857043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com