【问题标题】:Tensorflow sequential matrix multiplicationTensorflow 顺序矩阵乘法
【发布时间】:2017-11-29 11:34:23
【问题描述】:

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

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

我希望对tensor2 中的每个[100] dimensional 向量与tensor1 中对应的[max_time, 100] dimensional 矩阵进行矩阵乘法,得到batch_sizemax_time 维向量的个数;与[batch_size, max_time] dimensional 矩阵相同。

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

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

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

【问题讨论】:

    标签: tensorflow lstm tensor attention-model


    【解决方案1】:

    您可以做的是使用tf.matmul 并处理您的向量,例如 100 * 1 矩阵。

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

    【讨论】:

    • 感谢您的快速响应(帮助很大)。我不知道tf.matmul 对于具有rank > 2 的参数有不同的行为。
    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2018-11-29
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多