我想创建一个自定义Keras图层,用于计算2个输入矩阵和1个权重矩阵(对角线矩阵)之间的乘积:x W y
x = Input((8,200)) # (?,8,200)
y = Input((10,200)) # (?,10,200)
W # Weight matrix define with Keras (200,) 我想要计算形状为(?,8,10)的xWy的输出矩阵
我试着:
K.dot(x*W, K.transpose(Y)) # Raise Dimension error
K.dot(x*W, Permute(2,1))(Y)) # (?, 8, ?, 10)没有第一个维度(批量大小),我知道该怎么做,但有了它我就有点迷茫了。
发布于 2019-02-06 18:29:37
您可以使用K.batch_dot,它就是为此目的而设计的。
K.batch_dot(x*W, K.permute_dimensions(y, (0,2,1)), axes=[2, 1]) # (?, 8, 10)就能达到目的。
发布于 2019-02-06 18:26:51
可以指定在Keras dot图层中沿其获取点积的轴。下面的代码展示了如何将输入x和y相乘。如果你想添加一个权重矩阵W,你可以用类似的方法(首先将x和W相乘)。
x = Input((8,200)) # (?,8,200)
y = Input((10,200)) # (?,10,200)
output = keras.layers.Dot(axes=-1)([x, y]) # (?,8,10)https://stackoverflow.com/questions/54550837
复制相似问题