【问题标题】:How to convert a TensorFlow SavedModel graph to a Caffe model?如何将 TensorFlow SavedModel 图转换为 Caffe 模型?
【发布时间】:2019-06-04 23:26:40
【问题描述】:

我想使用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 在某个地方接受输入。但我不确定如何找到输入节点实际上是什么。

【问题讨论】:

    标签: tensorflow protocol-buffers


    【解决方案1】:

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

    要查找输入节点的名称,请确保以 pbtxt 格式保存 tf SavedModel。打开它并查找计算图的第一个节点,例如如果使用 tf resnet,第一个节点将被命名为 resnet_model/*。找到为该节点提供数据的节点,您将拥有输入节点的名称以指定给 MMdnn 工具。我希望这是估计器为输入添加的 tf.Placeholder。这个节点刚刚被命名为Placeholder,所以这就是我指定的输入节点。

    首先提取计算图。

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

    然后使用 MMdnn 将其转换为 caffe。

    mmconvert -sf tensorflow -iw ./graph_def.pb --inNodeName Placeholder --inputShape 224,224,3 --dstNodeName softmax -df caffe -om tf_resnet
    

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 2020-10-14
      • 1970-01-01
      • 2020-03-09
      • 2017-08-15
      • 1970-01-01
      • 2018-05-21
      • 2017-11-23
      • 1970-01-01
      相关资源
      最近更新 更多