【发布时间】:2018-08-01 12:39:24
【问题描述】:
我想在 Keras 中创建一个图层,这样:
y = Wx + c
其中 W 是块矩阵,形式为:
A 和 B 是包含元素的方阵:
而c是具有重复元素的偏置向量:
如何实施这些限制?我在想它可以在初始化权重时在 MyLayer.build() 中实现,也可以作为我可以指定某些索引相等但我不确定如何执行的约束。
【问题讨论】:
标签: python-3.x keras keras-layer
我想在 Keras 中创建一个图层,这样:
y = Wx + c
其中 W 是块矩阵,形式为:
A 和 B 是包含元素的方阵:
而c是具有重复元素的偏置向量:
如何实施这些限制?我在想它可以在初始化权重时在 MyLayer.build() 中实现,也可以作为我可以指定某些索引相等但我不确定如何执行的约束。
【问题讨论】:
标签: python-3.x keras keras-layer
您可以使用Concatenate 层定义这样的 W。
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 参数。加法和乘法非常简单。
【讨论】: