У меня есть следующий собственный тензор:
Eigen::Tensor<float, 3> m(3,10,10);
Я хочу получить доступ к 1-й матрице. В NumPy я бы сделал это так
m(0,:,:)
Как бы я сделал это в Эйгене
Вы можете получить доступ к частям тензора, используя .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}
вместо этого и так далее.
Ты можешь найти самая последняя документация здесь.
Других решений пока нет …