目录
目录
tensorflow2.0内置正则项
在隐藏层中经常会使用正则来作为损失函数的惩罚项。换言之,为了约束w的可能取值空间从而防止过拟合,我们为该最优化问题加上一个约束,就是w的L1范数或者L2范数不能大于给定值。
L2正则被用于防止模型的过拟合,L1正则项被用于产生稀疏权值矩阵。
tf.keras.regularizers提供了几种内置类来提供正则。分别是class L1、class L1L2、class L2、class Regularizer 、serialize。同时提供了三个参数作为可被正则化的对象:
- kernel_regularizer:对该层中的权值矩阵layer.weights正则
- bias_regularizer:对该层中的偏差矩阵layer.bias正则
- activity_regularizer:对该层的输出值矩阵layer.bias正则
设置kernel_regularizer
dense = tf.keras.layers.Dense(3, kernel_regularizer='l1')
layer = tf.keras.layers.Dense(
5, input_dim=5,
kernel_initializer='ones',
kernel_regularizer=tf.keras.regularizers.L1(0.01),
activity_regularizer=tf.keras.regularizers.L2(0.01))
tensor = tf.ones(shape=(5, 5)) * 2.0
out = layer(tensor)
tf.keras.regularizers.l1_l2(l1=0.01, l2=0.01)
tf.keras.regularizers.L1L2( l1=0.0, l2=0.0)
调用kernel_regularizer=tf.keras.regularizers.l1_l2(l1=0.02, l2=0.01)时, l o s s e s = L 1 + L 2 = l 1 ∑ ( ∣ w i j ∣ ) + l 2 ∑ ( w i j 2 ) losses=L_1+L_2=l_1\sum(|w_{ij}|)+l_2\sum(w_{ij}^2) losses=L1+L2=l1∑(∣wij∣)+l