如何从类似graph.pbtxt
的metagraphdef文件生成model.ckpt.meta
,即包含图def的protobuf?
我猜想graph.pbtxt
和model.ckpt.meta
这两个文件都是在训练期间生成的。但是,我想使用一种分析工具,该工具在经过预先训练的NN上需要graph.pbtxt
,而我只能访问model.ckpt.*
文件。这可能吗?
答案 0 :(得分:2)
要生成原生动物,您需要做两件事:
.meta
.ckpt
。本质上,.meta
文件包含图形定义,而.ckpt
文件包含训练模型的权重。 protobuf格式将两者合并为一个文件。
您必须先加载元图,然后再加载检查点,如下所示:
sess = tf.Session()
saver = tf.train.import_meta_graph(meta_file)
saver.restore(save_path=ckpt_file, sess=sess)
最后,您必须先定义图形的输出节点,然后再将其导出为protobuf格式。输出节点包含您希望能够检索的输出层的名称列表。例如,它可能是['myModel/fc12/BiasAdd']
。
from tensorflow.python.framework import graph_util
output_graph = graph_util.convert_variables_to_constants(
sess,
sess.graph.as_graph_def(),
output_node_names)
with tf.gfile.GFile('output.pb', 'wb') as f:
f.write(output_graph.SerializeToString())