如何使用c ++ api获得rank 3 tensorflow :: Tensor的最大值的索引?

时间:2017-05-13 19:12:40

标签: c++ tensorflow eigen

我们说我的Tensor t形状为{3, 4, 5}。我想找到第一个和第二个维度的最大值,因此这个操作的结果将是一个形状{5, 2}的矩阵。

到目前为止,我已尝试从Eigen::Tensor获取tensorflow::Tensor并在循环中使用maxCoeff,因此:

auto t_mapped = t.tensor<float, 3>();
Eigen::Matrix<float, 5, 2> maximums;

for (int i = 0; i < 5; i++){
    MatrixXf::Index maxRow, maxCol;
    t_mapped.maxCoeff(&maxRow, &maxCol);
    maximums(i, 0) = maxRow;
    maximums(i, 1) = maxCol;
}

但这不起作用,因为t.tensor<float, 3>()会返回Eigen::TensorMap<Eigen::Tensor<float, 3, 1, long>, 16, MakePointer>,而不是Eigen::Tensor。关于Eigen::TensorMap类,似乎没有太多文档。

如何从Eigen::Tensor中获取Eigen::TensorMap或者尝试使用tensorflow API?

1 个答案:

答案 0 :(得分:1)

为什么不用tf.argmax拨打axis=0