2017-11-29 16 views
1

연속 매트릭스 :Tensorflow 나는 다음과 같은 모양의 두 텐서를 곱셈

내가 뭘하고 싶은 것은의 batch_size 수를 얻을 수 tensor1[max_time, 100] dimensional 매트릭스를 대응하는 행렬 곱셈을 얻을 tensor2의 모든 [100] dimensional 벡터입니다
tensor1 => shape(?, ?, 100) # corresponds to [batch_size, max_time, embedding_size] 
tensor2 => shape(?, 100) # corresponds to [batch_size, embedding_size] 

max_time 차원 벡터; 이는 [batch_size, max_time] dimensional 행렬과 동일합니다.

알고 계신 분들께 : 기본적으로 seq2seq 모델의 인코더가 제공 한 인코딩 된 입력보다 콘텐츠 기반주의를 구현하려고합니다. 모든 [max_time] 치수 벡터는 나중에 내가 softmax하는주의 값입니다.

tensorflow가 contrib 패키지의 AttentionWrapper과 다양한 도우미를 제공한다는 사실을 알고 있습니다. 그러나 하이브리드주의 마스크를 얻기 위해주의 메커니즘을 실험하기 때문에이 작업을 수행하려고합니다.

나는 tf.while_loop을 시도했지만, 루프를 풀기 위해 ? 모양이 고착되었습니다. 벡터화 된 구현은 나에게도 매우 솔직하게 보이지 않습니다. 도와주세요.

답변

1

할 수있는 일은 tf.matmul을 사용하고 100 * 1 행렬과 같은 벡터를 처리하는 것입니다.

tensor2 = tf.expand_dims(tensor2, 2) 
result = tf.matmul(tensor1, tensor2) 
+0

빠른 응답을 부탁드립니다. 나는'tf.matmul'이'rank> 2 '를 갖는 인자에 대해 다른 행동을한다는 ​​것을 몰랐습니다. –