Keras在训练中修复非零权重的数量

时间:2017-09-10 09:07:00

标签: keras

Keras ,如何在优化和训练模型时控制 non-zero weights 的数量,以便我们有一个固定数量的 {{1 }} 。像正交匹配追求的东西。这可以通过将约束添加到成本函数

来完成

1 个答案:

答案 0 :(得分:0)

可以使用Keras中的regulizers来控制模型的权重。它的工作原理是根据权重对损失函数添加惩罚。我在某种程度上将它用于稀疏自动编码器,就像文档中描述的那样:

from keras import backend as K

def l1_reg(weight_matrix):
    return 0.01 * K.sum(K.abs(weight_matrix))

model.add(Dense(64, input_dim=64,
                kernel_regularizer=l1_reg)

但是,不仅可以限制权重之和,还可以限制零权重。例如,限制可以是M = weight_matrix.size - N,惩罚取决于M与零权重数之间的增量的绝对值,因此网络的最接近的数量为non-zero weights到{{1将有最小的惩罚

其他信息

根据我在训练过程中的经验,很少有人将权重变为零,主要是他们保持非常小但仍然不是零值。在这种状态下,它们对网络的工作几乎没有任何影响,所以我建议使用阈值将它们考虑为零重量

代码示例:

N