Tensorflow c ++,问题与张量和喂养有关

时间:2016-02-12 09:19:01

标签: python c++ tensorflow

我是TensorFlow C ++ API的新手,并尝试在Python中构建一个非常简单的图形并在C ​​++ API中加载/测试它。以下是创建图形的python代码:

with tf.Session() as sess: 
   a = tf.placeholder(tf.float32, shape=[2,2], name='a')
   b = tf.placeholder(tf.float32, shape=[2,2], name='b')
   c = tf.matmul(a, b, name="c")

   sess.run(tf.initialize_all_variables())

tf.train.write_graph(sess.graph_def, 'models/', 'graph.pb', as_text=False)

以下是加载和运行图表的C代码:

Tensor a(DT_FLOAT, TensorShape({2,2}));

Tensor b(DT_FLOAT, TensorShape({2,2}));
std::vector<std::pair<string, tensorflow::Tensor>> inputs = {
  { "a", a },
  { "b", b },
};

std::vector<tensorflow::Tensor> outputs;

status = session->Run(inputs, {"c"}, {}, &outputs);

但是我收到此错误消息:

  

./ tensorflow / core / framework / tensor.h:500]检查失败:1 ==   NumElements()(1对4)必须有一个元素张量

可能是什么问题?我注意到如果我在python和C ++中将我的张量定义为[1,1],它会没有任何问题!

1 个答案:

答案 0 :(得分:1)

看看here,我试图完全解释一切  总而言之,您应该使用'freeze_graph'文件使训练变量保持不变,然后将其导入C ++文件中。