如何使用 c++ API 获取秩 3 张量流::张量的最大值的索引

How can I get the indices of the max values of a rank 3 tensorflow::Tensor using the c++ api?

本文关键字:张量 最大值 索引 张量流 c++ 何使用 API 获取      更新时间:2023-10-16

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

到目前为止,我已经尝试通过从tensorflow::Tensor获取Eigen::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::TensorMap中获取Eigen::Tensor,或者做我想用张量流API做的事情?

为什么不用axis=0来称呼tf.argmax呢?