如何将TensorFlow SavedModel图转换为Caffe模型?

3
我想使用MMdnn将tensorflow ResNet模型转换为其他框架。似乎我只能使用mmconvert从.pb冻结图文件中读取。
但是,当使用tf.estimator.Estimator时,它创建的.pb文件是SavedModelDef。我理解这是tf GraphDef的包装器。因此,可以使用freeze_graph.py从SavedModel中提取GraphDef .pb文件。
从那里,我将需要tf GraphDef中输入节点的名称。但我不确定如何从.pbtxt中查找名称。根据该框架,tf.Estimator输入使用tf.Dataset对象。
我猜应该有一个tf.Placeholder接受输入。但我不确定如何找到实际的输入节点。
1个回答

2

在这里回答自己的问题。tensorflow附带的freeze_graph实用程序可用于从tf SavedModel格式中提取graphdef。

要找到输入节点的名称,请确保将tf SavedModel保存为pbtxt格式。打开它并查找计算图的第一个节点,例如如果使用tf resnet,则第一个节点将被命名为resnet_model / *。找到馈送此节点的节点,您将拥有指定给MMdnn工具的输入节点的名称。我预计这将是Estimator添加的tf.Placeholder用于输入。该节点仅命名为 Placeholder ,因此我将其指定为输入节点。

首先提取计算图。

<code>freeze_graph --input_saved_model_dir <path/to/saved_model_dir> --output_node_names softmax --output_graph ./graph_def.pb
</code>

然后使用MMdnn将其转换为caffe。
mmconvert -sf tensorflow -iw ./graph_def.pb --inNodeName Placeholder --inputShape 224,224,3 --dstNodeName softmax -df caffe -om tf_resnet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接