我的项目使用Python在TensorFlow上训练MLP,然后以这种方式导出图形和权重:
tf.train.write_graph(sess.graph_def, "./", "inp.txt", True)
saver.save(sess, 'variables/model.ckpt', global_step=1)
现在,尽管使用这两个文件将其导回到Python是可以的,但似乎不可能将它用于Android或C ++,因为它无法输入检查点.ckpt。
目前,我正在使用谷歌提供的脚本freeze_graph.py
将两个文件合并为一个:
bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=inp.txt --input_checkpoint=variables/model.ckpt-1 --output_graph=newoutput.pb --output_node_names=output
我的问题是,有没有办法使用另一个函数而不是tf.train.write_graph
来导出它并包含权重?
答案 0 :(得分:1)
答案 1 :(得分:1)
不幸的是,目前无法做到这一点。
直接做到这一点真是太好了。我的意思是,用一个单一的方式做一些事情会很好,而不是必须生成两个文件,然后运行另一个脚本来转换它们。
对于在笔记本电脑上使用混合显卡的人来说,这是特别糟糕的。
无论如何,正如TensorFlow小组所说:
我们没有计划直接支持输出.pb文件。如果你 担心有太多的检查点文件占用空间,你可以 将max_to_keep限制为1。
答案 2 :(得分:0)
目前,freezegraph是解决此问题的唯一方法。
对我而言,它不能很好地工作,因为我必须每天在许多计算机上安装它,因为人们不断搞乱,冻结图迫使我从源代码安装它。
他们必须创造另一种方式来做到这一点。一种内置的方式。特别是如果他们想要我们用于Android。