L1-L2正则化的不同系数

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)
2个回答

4
当然,您可以独立地改变正则化器的强度:regularizers
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

非常感谢!很奇怪他们没有在文档中提到这一点。 - Felix

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接