Tensorflow C++,张量和馈送问题

Posted

技术标签:

【中文标题】Tensorflow C++,张量和馈送问题【英文标题】:Tensorflow c++, issue with tensors and feeding 【发布时间】:2016-02-12 09:19:00 【问题描述】:

我对 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 vs. 4)必须有一个单元素张量

可能是什么问题?我注意到如果我在 python 和 C++ 中将我的张量定义为 [1,1],它会毫无问题地通过!

【问题讨论】:

【参考方案1】:

看看here,我尽力把一切都解释清楚了 总而言之,您应该使用“freeze_graph”文件使经过训练的变量保持不变,然后将其导入您的 C++ 文件中。

【讨论】:

以上是关于Tensorflow C++,张量和馈送问题的主要内容,如果未能解决你的问题,请参考以下文章

[TensorFlow系列-14]:TensorFlow基础 - 张量的操作 - 拼接与堆叠

TensorFlow2 数据操作基础

在 Tensorflow C++ 中将浮点向量传递给张量

Tensorflow 为张量创建 Protobuf

TensorFlow 类占位符,以及其他定义输入张量的方法

我想在 anaconda 中安装 tensorflow,但它显示错误: