训练后用占位符交换TensorFlow数据集输入管道

训练后用占位符交换TensorFlow数据集输入管道,第1张

训练后用占位符交换TensorFlow数据集输入管道

由于您已经在检查点中保存了经过训练的图,因此 从理论上讲
,最简单的解决方案是通过导出推理图

optimize_for_inference

该工具既适用于已经冻结的图,也适用于您仍然定义了变量的图(根据您的情况)。假设您选择冻结图方式,第一步是通过以下方式将图的变量转换为常量:

python freeze_graph.py --input_graph=temp/path/graph.pbtxt --input_checkpoint=temp/path/your_model_name.ckpt --output_graph=frozen_model.pb --output_node_names=name_of_the_output_tensor_you_want_to_use

这将生成一个名为的新二进制文件

frozen_model.pb
,该文件的
Variable
*** 作已替换为
Const
ops,并带有从检查点文件加载的值。

然后,您需要使用以下命令生成推理图:

python optimize_for_inference.py --input=frozen_model.pb --output=inference.pb --frozen_graph=True --input_names=IteratorGetNext--output_names=name_of_the_output_tensor_you_want_to_use

这将用

IteratorGetNext
浮动占位符替换节点。您可能想要选择另一个节点,在这种情况下,只需更改名称即可。您还可以通过该
--placeholder_type_enum
选项更改生成的占位符的类型。在这种情况下,您需要提供一个与
DataType
enum中所需的数据类型匹配的整数值。

注意:
我之所以说“理论上”,是因为实际上我从测试中检查了生成的初始图,我似乎发现其中仍然存在一些奇怪的 *** 作,这些 *** 作实际上并不是推理所必需的。您可能需要通过nvidia的Graph
Surgeon或TF的图形转换工具进一步处理图形



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5632159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存