乘在Keras定制层3矩阵

问题描述 投票:0回答:2

我想创建用于计算2点输入矩阵和1个权重矩阵(对角矩阵)之间的乘积的自定义Keras层:x宽ÿ

x = Input((8,200)) # (?,8,200)
y = Input((10,200)) # (?,10,200)
W # Weight matrix define with Keras (200,) 

我想要计算XWY与形状输出矩阵(?,8,10)

我尝试:

K.dot(x*W, K.transpose(Y)) # Raise Dimension error
K.dot(x*W, Permute(2,1))(Y)) # (?, 8, ?, 10)

如果没有第一个维度(批量)我看到如何做到这一点,但它我有点失落。

keras matrix-multiplication
2个回答
1
投票

您可以使用K.batch_dot,这是为这个目的的。

 K.batch_dot(x*W, K.permute_dimensions(y, (0,2,1)), axes=[2, 1]) # (?, 8, 10)

会做的伎俩。


0
投票

您可以指定沿拿点积在Keras点层的轴。下面的代码演示了如何增加你的投入xy。如果你想(通过第一乘以Wx)添加权重矩阵W你可以做,以类似的方式。

x = Input((8,200)) # (?,8,200)
y = Input((10,200)) # (?,10,200)
output = keras.layers.Dot(axes=-1)([x, y]) # (?,8,10)
© www.soinside.com 2019 - 2024. All rights reserved.