我想在Keras中创建一个图层:
y = Wx + c
其中W是具有以下形式的块矩阵:
A和B是带有元素的方形矩阵:
和c是具有重复元素的偏向量:
如何实施这些限制?我认为它可以在初始化权重时在MyLayer.build()中实现,也可以作为约束,我可以指定某些索引相等,但我不确定如何这样做。
答案 0 :(得分:4)
您可以使用Concatenate
图层定义此类。
import keras.backend as K
from keras.layers import Concatenate
A = K.placeholder()
B = K.placeholder()
row1 = Concatenate()([A, B])
row2 = Concatenate()([B, A])
W = Concatenate(axis=1)([row1, row2])
评估示例:
import numpy as np
get_W = K.function(outputs=[W], inputs=[A, B])
get_W([np.eye(2), np.ones((2,2))])
返回
[array([[1., 0., 1., 1.],
[0., 1., 1., 1.],
[1., 1., 1., 0.],
[1., 1., 0., 1.]], dtype=float32)]
要找出确切的解决方案,您可以使用placeholder
' shape
参数。加法和乘法非常简单。