究竟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进行设置。