当加载由optimize_for_inference工具生成的模型文件时,我看到类似的错误“节点ExpandDims_6的输入0从input_feed传递float:0与预期的int64不兼容”。
皮特的评论“删除未使用的节点的新图形转换方法可能更强大?https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms/#optimizing-for-deployment" on https://github.com/tensorflow/tensorflow/issues/8242似乎建议我们应该使用新的transform_graph工具。
更新后的 TensorFlow Mobile 文档中没有提及 optimize_for_inference 工具https://www.tensorflow.org/mobile还建议使用transform_graph工具。
正当我怀疑罪魁祸首出在优化工具时,我看到了你的问题。谢谢你......刚刚尝试了transform_graph工具,它可以工作,无论是转换后的模型还是转换后的进一步memmapping模型。下面是我使用的 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