代码之家  ›  专栏  ›  技术社区  ›  Felix

l1-l2正则化的不同系数

  •  3
  • Felix  · 技术社区  · 6 年前

    我想通过l1和l2规则化调整网络的权重。但是,我找不到一种方法来独立地改变规则化的强度。喀拉斯 documentation 也不提供任何信息。

    所以, 有没有一种方法可以利用 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 回复  |  直到 6 年前
        1
  •  3
  •   today    6 年前

    当然,你可以改变 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
    
        2
  •  0
  •   today    6 年前

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

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

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