1

我有以下形状的两个张量:

tensor1 => shape(?, ?, 100) # corresponds to [batch_size, max_time, embedding_size]
tensor2 => shape(?, 100) # corresponds to [batch_size, embedding_size]

我想要做的是为每个[100] dimensional向量tensor2获得与相应[max_time, 100] dimensional矩阵的矩阵乘法tensor1以获得维向量batch_size的数量;max_time这与[batch_size, max_time] dimensional矩阵相同。

对于那些知道的人:我基本上是在尝试在 seq2seq 模型的编码器给出的编码输入上实现基于内容的注意力。所有的[max_time]维度向量只是我后来softmax的注意力值。

我知道 tensorflowAttentionWrapper在包中提供了各种帮助contrib程序。但是,我希望这样做,因为我正在尝试使用注意力机制来获得混合注意力掩码。

我已经尝试过了,tf.while_loop但是卡在了?展开循环的形状中。矢量化实现对我来说似乎也不是很直接。请帮忙。

4

1 回答 1

1

你可以做的是使用tf.matmul和处理你的向量,比如 100 * 1 矩阵。

tensor2 = tf.expand_dims(tensor2, 2)
result = tf.matmul(tensor1, tensor2)
于 2017-11-29T12:23:52.897 回答