在冻结图上使用optimize_for_inference.py后使用模型时出错

gus*_*avz 2 python optimization tensorflow tensorboard

tensorflows script optimize_for_inderence.pyssd_mobilenet_v1_coco modelwith 上使用以下命令:

python -m tensorflow.python.tools.optimize_for_inference \
    --input /path/to/frozen_inference_graph.pb \
    --output /path/to/optimized_inference_graph.pb \
    --input_names=image_tensor \
    --output_names=detection_boxes,detection_scores,num_detections,detection_classes
Run Code Online (Sandbox Code Playgroud)

它工作正常,没有错误,但是如果我要为其使用创建的Model .pb文件TensorboardInference则会出现以下错误:

ValueError:graph_def在节点u'ToFloat'上无效:输入张量'image_tensor:0'无法将float32类型的张量转换为uint8类型的输入。

参见Tensorbaord可视化的原始图形:

如您所见,该节点ToFloat紧接在image_tensor输入之后

因此,优化显然出了点问题。但是呢

Jef*_*ang 5

加载由optimize_for_inference工具生成的模型文件时,我看到一个类似的错误“节点ExpandDims_6的输入0从input_feed:0传递给float与预期的int64不兼容”。

皮特的评论“新的图形变换的方法来删除未使用的节点可能会更强劲? https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms/#optimizing-for-deployment ”对HTTPS:/ /github.com/tensorflow/tensorflow/issues/8242似乎建议我们使用新的transform_graph工具。

在更新的TensorFlow Mobile文档https://www.tensorflow.org/mobile中没有提及optimize_for_inference工具,也建议了transform_graph工具。

当我怀疑罪魁祸首是优化工具时,我看到了您的问题。谢谢。。只需尝试了transform_graph工具,它就可以与转换后的模型以及转换后的进一步映射模型一起使用。以下是我使用的3个冻结冻结的转换命令:

python tensorflow/python/tools/freeze_graph.py  \
--input_meta_graph=/tmp/ckpt4.meta \
--input_checkpoint=/tmp/ckpt4 \
--output_graph=/tmp/ckpt4_frozen.pb \
--output_node_names="softmax,lstm/initial_state,lstm/state" \
--input_binary=true

bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=/tmp/ckpt4_frozen.pb \
--out_graph=/tmp/ckpt4_frozen_transformed.pb \
--inputs="convert_image/Cast,input_feed,lstm/state_feed" \
--outputs="softmax,lstm/initial_state,lstm/state" \
--transforms='
      strip_unused_nodes(type=float, shape="1,299,299,3")
      fold_constants(ignore_errors=true) 
      fold_batch_norms
      fold_old_batch_norms'  


bazel-bin/tensorflow/contrib/util/convert_graphdef_memmapped_format \
--in_graph=/tmp/ckpt4_frozen_transformed.pb \
--out_graph=/tmp/ckpt4_frozen_transformed_memmapped.pb
Run Code Online (Sandbox Code Playgroud)