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++,张量和馈送问题的主要内容,如果未能解决你的问题,请参考以下文章