2017-10-31 1 views

답변

0

나는 당신의 질문을 이해한다면, 먼저 (1,3,4)로 B를 바꿀 수 있고 다음이 매우 효율적입니다 알고하지 마십시오 축 0에 따라 값을 복제하는 방송 사용하지만, 그것을 작동합니다.

auto A = Tensor<float, 3>(2, 3, 4); 
A.setValues({ 
    { 
     {1,2,3,4}, 
     {5,6,7,8}, 
     {9,10,11,12}, 
    },{ 
     { 10,20,30,40 }, 
     { 50,60,70,80 }, 
     { 90,100,110,120 }, 
    } 
}); 

auto W = Tensor<float, 2>(3,4); 
W.setValues({ 
    { 1,2,3,4 }, 
    { 5,6,7,8 }, 
    { 9,10,11,12 } 
}); 


auto three_dims = Eigen::array<int, 3>({ 1,3,4 }); 
auto bcast = Eigen::array<int, 3>({ 2,1,1 }); 
auto X = W.reshape(three_dims).broadcast(bcast); 

auto Y = A*X; 

std::cout << Y << std::endl; 

인쇄 :

1 25 81 4 36 100 9 49 121 16 64 144 
10 250 810 40 360 1000 90 490 1210 160 640 1440 
관련 문제