Eigen :: Tensor,如何从Tensor

时间:2018-02-06 19:43:58

标签: c++ eigen3 tensor

我有以下Eigen Tensor:

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

我想访问第一个矩阵。在numpy我会这样做

m(0,:,:)

我将如何在Eigen

中执行此操作

1 个答案:

答案 0 :(得分:4)

您可以使用.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},依此类推。

您可以找到the most recent documentation here