San*_*der 3 c++ python deep-learning tensorflow
这个问题与这个问题有关: 从Python导出Tensorflow图以便在C++中使用
我正在尝试将Tensorflow模型从Python导出到C++.问题是,我的神经网络以占位符开始接收输入,这需要一个feed_dict.我找不到任何c ++ API来为我的模型提供feed_dict.我能做什么?
如果没有用于提供feed_dicts的API,我应该如何更改我的模型,以便可以在没有占位符的情况下为c ++目的训练和导出它?
mrr*_*rry 11
该tensorflow::Session::Run()方法是Python tf.Session.run()方法的C++等价物,它支持使用inputs参数提供张量.就像C++与Python中的许多东西一样,它使用起来有点棘手(在这种情况下,它看起来像文档有点差......).
该inputs参数的类型为const std::vector<std::pair<string, Tensor>>&.让我们打破这个:
每个元素inputs对应于您要在Run()调用中提供的单个张量(例如占位符).元素有类型std::pair<string, Tensor>.
第一个元素std::pair<string, Tensor>是图形中要提供的张量的名称.例如,让我们用Python说你有:
p = tf.placeholder(..., name="placeholder")
# ...
sess.run(..., feed_dict={p: ...})
Run Code Online (Sandbox Code Playgroud)
...然后在C++中,该对的第一个元素将是值p.name,在这种情况下将是"placeholder:0"
第二个元素std::pair<string, Tensor>是您要作为tensorflow::Tensor对象提供的值.你必须自己用C++构建它,并且定义Numpy数组或Python对象有点复杂,但这里是一个如何指定2 x 2矩阵的例子:
using tensorflow::Tensor;
using tensorflow::TensorShape;
Tensor t(DT_FLOAT, TensorShape({2, 2}));
auto t_matrix = t.matrix<float>();
t_matrix(0, 0) = 1.0;
t_matrix(0, 1) = 0.0;
t_matrix(1, 0) = 0.0;
t_matrix(1, 1) = 1.0;
Run Code Online (Sandbox Code Playgroud)
...然后你可以t作为对的第二个元素传递.
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |