我们说我的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?
答案 0 :(得分:1)
为什么不用tf.argmax
拨打axis=0
?