【问题标题】:Tensorflow model works in Python but not in C++TensorFlow 模型适用于 Python,但不适用于 C++
【发布时间】:2017-01-06 02:26:02
【问题描述】:

作为背景知识,我的主要目标是使用 Tensorflow 的 C++ API 对图像进行分类并在不同系统上对其进行计时。

我使用Ry's model converter 将他的Caffe 模型转换为Tensorflow,一旦打开它就会生成vgg16.tfmodel 文件,它看起来是一个.pb 文件。

使用 Ry 的 tf_forward.py 运行这个生成的文件似乎工作得很好,可以对猫、狗等进行分类。但是,当我修改 label_image 示例 (tensorflow/examples/label_image/) 以使用我的新 vgg16.pb 文件时,似乎出了点问题。

这里是从 tensorflow-vgg16 示例中对猫的图片进行分类的输出:

I tensorflow/examples/label_image/main.cc:195] n03729826 matchstick (644): 0.0762781
I tensorflow/examples/label_image/main.cc:195] n01930112 nematode, nematode worm, roundworm (111): 0.0493599
I tensorflow/examples/label_image/main.cc:195] n03196217 digital clock (530): 0.0317698
I tensorflow/examples/label_image/main.cc:195] n03666591 lighter, light, igniter, ignitor (626): 0.0313151
I tensorflow/examples/label_image/main.cc:195] n04286575 spotlight, spot (818): 0.0252088

这是我在修改 label_image/main.cc 时使用的设置:

string image = "tensorflow/examples/label_image/data/cat.jpg"; //from Ry's project
string graph = "tensorflow/examples/label_image/data/vgg16.pb"; //renamed from Ry's project
string labels ="tensorflow/examples/label_image/data/synset.txt"; //from Ry's project
int32 input_width = 224;
int32 input_height = 224;
int32 input_mean = 128;
int32 input_std = 128;
string input_layer = "mul";
string output_layer = "prob";
bool self_test = false;
string root_dir = "";

我也尝试过 freeze_graph.py 来获取模型和权重,但我永远无法让它正常工作。在追溯所有内容后,我遇到了 protobuf 代码并有点卡住了。任何帮助将不胜感激:)

【问题讨论】:

    标签: python c++ tensorflow


    【解决方案1】:

    对于以后看到这个的人来说,这个问题是由于使用了错误的输入层名称造成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2021-09-25
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多