Disons que j'ai un Tensor t
qui a une forme {3, 4, 5}
. Je voudrais trouver la valeur maximale de la première et deuxième dimensions, de sorte que le résultat de cette opération serait une matrice de forme {5, 2}
.Comment puis-je obtenir les indices des valeurs maximales d'un tensorflow :: Tenseur de rang 3 en utilisant l'API C++?
Jusqu'à présent, j'ai essayé de en obtenant un Eigen::Tensor
du tensorflow::Tensor
et en utilisant maxCoeff
dans une boucle, donc:
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;
}
Mais cela ne fonctionne pas parce que t.tensor<float, 3>()
retourne un Eigen::TensorMap<Eigen::Tensor<float, 3, 1, long>, 16, MakePointer>
, pas Eigen::Tensor
. Il ne semble pas y avoir beaucoup de documentation sur la classe Eigen::TensorMap
.
Comment puis-je obtenir un Eigen::Tensor
sur le Eigen::TensorMap
ou faire ce que j'essaie de faire avec l'API tensorflow?
Vous ne retournez pas l'élément maximum? Pas l'indice de celui-ci? –
argmax renvoie les indices, max renvoie l'élément –