python - 在卡住图上使用 optimize_for_inference.py 后使用模型时出错

标签 python optimization tensorflow tensorboard

我在 ssd_mobilenet_v1_coco 模型 上使用 tensorflows 脚本 optimize_for_inderence.py,命令如下:

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

它没有错误地工作,但是如果我想将创建的 Model .pb 文件用于 TensorboardInference 它给了我以下错误:

ValueError: graph_def is invalid at node u'ToFloat': Input tensor 'image_tensor:0' Cannot convert a tensor of type float32 to an input of type uint8.

查看 Tensorbaord 可视化的原始图形:

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

所以显然优化出了问题。但是什么?

最佳答案

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

Pete 的评论“删除未使用节点的新图形转换方法可能更健壮? 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 文档中没有提到 optimize_for_inference 工具 https://www.tensorflow.org/mobile还建议使用 transform_graph 工具。

就在我怀疑罪魁祸首在优化工具中时,我看到了你的问题。谢谢.. 刚刚尝试了 transform_graph 工具,它在转换后的模型和转换后进一步映射的模型上都有效。以下是我使用的 3 个命令 freeze-transform-memmapped:

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

关于python - 在卡住图上使用 optimize_for_inference.py 后使用模型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212068/

相关文章:

python - python popen 和 exec 的区别

python - 使用 Numpy 缓解浮点逼近问题

C# - Linq 使用 List 和 Where 子句优化代码

c++ - 全局变量是否意味着更快的代码?

python - 机器学习: How to regularize output and force them to be away from 0?

python - 如何对自定义 Keras/Tensorflow 损失函数中的值进行排序?

python - 在一张图中绘制两条曲线时遇到错误(python-pandas-matplotlib)

python - Pandas :在特定时间窗口中选择行

sql - 帮助删除 mysql 文件排序

tensorflow - Faster Rcnn Box Coder 中比例因子的作用是什么?