Eigen :: Tensor, как получить доступ к матрице из Tensor

У меня есть следующий собственный тензор:

Eigen::Tensor<float, 3> m(3,10,10);

Я хочу получить доступ к 1-й матрице. В NumPy я бы сделал это так

m(0,:,:)

Как бы я сделал это в Эйгене

3

Решение

Вы можете получить доступ к частям тензора, используя .slice(...) или же .chip(...), Сделайте это для доступа к первой матрице, эквивалентной numpy m(0,:,:):

Eigen::Tensor<double,3> m(3,10,10);            //Initialize
m.setRandom();                                 //Set random values
Eigen::array<long,3> offset = {0,0,0};         //Starting point
Eigen::array<long,3> extent = {1,10,10};       //Finish point
std::cout <<  m.slice(offset, extent).reshape(Eigen::array<long,2>{10,10}) << std::endl;  //Reshape the slice into a 10x10 matrix.

Если вы хотите «вторую» матрицу, вы используете offset={1,0,0} вместо этого и так далее.

Ты можешь найти самая последняя документация здесь.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]