如何访问tensorflow :: Tensor C ++

时间:2018-05-23 22:51:37

标签: c++ tensorflow eigen

我正在使用其C ++ API运行Tensorflow。

我有以下调用,在finalOutput中返回四个张量:

        std::string str1 = "detection_boxes";
        std::string str2 = "detection_scores";
        std::string str3 = "detection_classes";
        std::string str4 = "num_detections";

        std::vector<Tensor> finalOutput;
        status = session->Run({ {InputName, inputTensor} }, { str1, str2, str3, str4 }, {}, &finalOutput);
        std::cout << finalOutput[0].DebugString() << std::endl;

print语句输出以下内容:

&#34;&张量LT; 类型:浮点形状:[1,100,4]值:[[0.00710274419 0.766219556 0.0347728245]] ...&gt;&#34;

现在我有一个包含100个元素的Tensor,每个元素有4个值,我如何遍历元素和值?

似乎我必须调用一个函数来返回一个Eigen :: TensorMap然后以某种方式访问​​元素。我只是不确定如何做到这一点。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我可以这样

// tensor<float, 3>: 3 here because it's a 3-dimension tensor
auto output_detection_boxes = outputs[0].tensor<float, 3>();
std::cout << "detection boxes" << std::endl;
for (int i = 0; i < 100; ++i) {
  for (int j = 0; j < 4; ++j)
    // using (index_1, index_2, index_3) to access the element in a tensor
    std::cout << output_detection_boxes(0, i, j)
              << "\t";
  std::cout << std::endl;
}

这是输出

detection boxes
0.0370  0.0465  0.8914  0.3171
0.0924  0.3944  0.9344  0.9769
0.0155  0.2988  0.8812  0.5263
0.1518  0.3817  0.9316  1.0000
0.0000  0.3285  0.8447  0.6669
0.0389  0.2030  0.8504  0.4749
...

(100 in total)