【问题标题】:Keras custom layer/constraint to implement equal weightsKeras 自定义层/约束以实现等权重
【发布时间】:2018-08-01 12:39:24
【问题描述】:

我想在 Keras 中创建一个图层,这样:

y = Wx + c

其中 W 是块矩阵,形式为:

A 和 B 是包含元素的方阵:

而c是具有重复元素的偏置向量:

如何实施这些限制?我在想它可以在初始化权重时在 MyLayer.build() 中实现,也可以作为我可以指定某些索引相等但我不确定如何执行的约束。

【问题讨论】:

    标签: python-3.x keras keras-layer


    【解决方案1】:

    您可以使用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)]
    

    要找出确切的解决方案,您可以使用placeholdershape 参数。加法和乘法非常简单。

    【讨论】:

    • 我是 Keras 的新手,所以如果我错了,请纠正我。占位符不是用于输入吗?我希望 W 的元素是可训练的参数。
    • 我使用它们是因为我想展示一个测试。您可以使用任何张量来执行此操作(只要 A 和 B 具有适当的形状,例如方阵)。
    • 啊,我明白了。谢谢!
    猜你喜欢
    • 2020-06-02
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多