4

我想用 L1 和 L2 正则化来正则化网络的权重。但是,我找不到独立改变正则化强度的方法。Keras文档也不提供任何信息。

那么,有没有办法在l1_l2正则化器中使用不同的优势?或者也许是实现相同结果的替代方法?

我目前的模型很简单:

stren = 0.001
model = Sequential()
model.add(Dense(64, input_dim=148, activation='relu', kernel_regularizer=reg.l2(stren)))
model.add(Dense(1, activation='sigmoid', kernel_regularizer=reg.l2(stren)))

我希望能够有一些类似的东西:

kernel_regularizer=reg.l1_l2(l1_str, l2_str)
4

2 回答 2

4

当然,您可以独立地改变正则化器的强度:

from keras import regularizers

regularizers.l1_l2(l1=0.001, l2=0.1) # the strength of l1 is set to 0.001 and l2 to 0.1
于 2018-06-19T13:34:06.917 回答
0

也许您可以尝试根据您的损失函数自定义正则化,并在 Keras 框架中设计一个用户定义的正则化函数。像这样的东西:

def l1_l2(l1=0.01, l2=0.01):
    return L1L2(l1=l1, l2=l2)

或者使用层之间的 dropout 函数,例如Dropout(0.2).

于 2018-06-19T12:44:58.670 回答