Eigen :: Tensor,如何从Tensor访问矩阵

raa*_*aaj 4 c++ eigen3 tensor

我有以下本征张量:

Eigen::Tensor<float, 3> m(3,10,10);
Run Code Online (Sandbox Code Playgroud)

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

m(0,:,:)
Run Code Online (Sandbox Code Playgroud)

我将如何在Eigen中进行

Dav*_*Ace 5

您可以使用.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.
Run Code Online (Sandbox Code Playgroud)

如果需要“第二”矩阵,请offset={1,0,0}改用,依此类推。

您可以在此处找到最新文档

  • @杰米是的!对于本例中沿第三轴的切片,您应该采用“offset = {0,0,0}”、“extent = {3,10,1}”,然后“shape2 = {3,10}”。 (2认同)