L1/L2正则化使用

对于L1/L2正则化使用的疑惑

究竟L1、L2正则化可以使用到哪里?是全连接层还是卷积层?

代码1:是使用在全连接层

# 仅添加权重正则化
Dense(256, kernel_regularizer=keras.regularizers.l1(0.01))#加入l1
Dense(256, kernel_regularizer=keras.regularizers.l2(0.01))#加入l2
LSTM(256, kernel_regularizer=keras.regularizers.l1_l2(0.001, 0.01))#加入l1和l2
# 添加一些其他正则化
Dense(256, kernel_regularizer=keras.regularizers.l1(0.01),bias_regularizer=keras.regularizers.l1(0.01),activity_regularizer=keras.regularizers.l1(0.01))

代码1来源于https://forecast.blog.csdn.net/article/details/123137733?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.topblog&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2.topblog&utm_relevant_index=5

代码2:使用在卷积层

model = keras.models.Sequential([
        #卷积层1
        keras.layers.Conv2D(32,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu,kernel_regularizer=keras.regularizers.l2(0.01)),
        #池化层1
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #卷积层2
        keras.layers.Conv2D(64,kernel_size=5,strides=1,padding="same",data_format="channels_last",activation=tf.nn.relu),
        #池化层2
        keras.layers.MaxPool2D(pool_size=2,strides=2,padding="same"),
        #数据整理
        keras.layers.Flatten(),
        #1024个,全连接层
        keras.layers.Dense(1024,activation=tf.nn.relu),
        #100个,全连接层
        keras.layers.Dense(100,activation=tf.nn.softmax)
    ])

代码2来源于
https://blog.csdn.net/weixin_39860108/article/details/111797567

针对正则化的理论知识,可以参考Keras 中 L1正则化与L2正则化的代码用法和原理细致总结
整个正则化理论我还是不太知道该怎么使用,恳请知道的大佬指教一下。

暂且我先按照代码1进行设置。

你可能感兴趣的:(python)