У меня есть следующий собственный тензор:
Eigen::Tensor<float, 3> m(3,10,10);
Я хочу получить доступ к 1-й матрице. В numpy я бы сделал это как таковой
m(0,:,:)
Как бы я сделал это в Eigen
У меня есть следующий собственный тензор:
Eigen::Tensor<float, 3> m(3,10,10);
Я хочу получить доступ к 1-й матрице. В numpy я бы сделал это как таковой
m(0,:,:)
Как бы я сделал это в Eigen
Вы можете получить доступ к частям тензора, используя .slice(...)
или .chip(...)
. Сделайте это, чтобы получить доступ к первой матрице, эквивалентной numpy m(0,:,:)
:
Eigen::Tensor<double,3> m(3,10,10); //Initialize
m.setRandom(); //Set random values
std::array<long,3> offset = {0,0,0}; //Starting point
std::array<long,3> extent = {1,10,10}; //Finish point
std::array<long,2> shape2 = {10,10}; //Shape of desired rank-2 tensor (matrix)
std::cout << m.slice(offset, extent).reshape(shape2) << std::endl; //Extract slice and reshape it into a 10x10 matrix.
Если вам нужна вторая матрица, вы используете вместо нее offset={1,0,0}
и так далее.
Вы можете найти самую последнюю документацию здесь.
m.slice(offset, extent).reshape(shape2)
не возвращает тип собственной матрицы.
- person Madeleine P. Vincent; 01.05.2021