keras中带有向量的多重矩阵
Multiple matrix with vector in keras
我正在尝试计算矩阵的每一行与 Keras 中的向量之间的点积。
例如,
x = [[2,3,4,5,5],
[3,4,5,6,1],
[5,6,4,2,4],
[4,2,3,4,1]]
w = [0.1,0.3,0.5,0.2,0.6]
在 numpy 中我可以这样做
[np.dot(xx, w) for xx in x]
但是我如何在 Keras 中做到这一点?
P.S。我简化了表示,我实际上想计算一个句子与另一个词之间的注意力。所以在上面的矩阵中,每个数字对应一个300维的向量,因为它们是相同的维度,所以我只用一个词来表示它们。
我也在这里问过这个问题:https://github.com/fchollet/keras/issues/4680但是那里没有人回答我的问题,请问有人能帮帮我吗?
谢谢。
- 如何实现
for
:我推荐你使用K.tile
或者如果你不熟悉tile
就使用timedistributed
层。你可以想象每一行都是一个时间片。
- 如何实现
dot
:可以定义一个Dense
层,然后用l.set_weight()
和l.trainable=False
固定注意力。
我正在尝试计算矩阵的每一行与 Keras 中的向量之间的点积。
例如,
x = [[2,3,4,5,5],
[3,4,5,6,1],
[5,6,4,2,4],
[4,2,3,4,1]]
w = [0.1,0.3,0.5,0.2,0.6]
在 numpy 中我可以这样做
[np.dot(xx, w) for xx in x]
但是我如何在 Keras 中做到这一点?
P.S。我简化了表示,我实际上想计算一个句子与另一个词之间的注意力。所以在上面的矩阵中,每个数字对应一个300维的向量,因为它们是相同的维度,所以我只用一个词来表示它们。
我也在这里问过这个问题:https://github.com/fchollet/keras/issues/4680但是那里没有人回答我的问题,请问有人能帮帮我吗?
谢谢。
- 如何实现
for
:我推荐你使用K.tile
或者如果你不熟悉tile
就使用timedistributed
层。你可以想象每一行都是一个时间片。 - 如何实现
dot
:可以定义一个Dense
层,然后用l.set_weight()
和l.trainable=False
固定注意力。