TensorFlow中计算L1正则化和L2正则化的函数:
L1正则化:tf.contrib.layers.l1regularizer(lambda)(w),它可以返回一个函数,这个函数可以计算一个给定参数的L1正则化项的值。
L2正则化:tf.contrib.layers.12_regularizer(lambda)(w),可以计算L2正则化项的值 。
lambda参数表示了正则化项的权重,也就是公式J(θ)+λR(w)中的λ。w为需要计算正则化损失的参数。
正则化可以解决模型过拟合问题。
下边代码是计算L1和L2正则化:
import tensorflow as tf
weights = tf.constant([[1.0, -2.0],[-3.0 , 4.0]])
with tf.Session() as sess:
# 输出为(|1|+|-2|+|-3|+|4|)x0.5=5。其中0.5为正则化项的权重。
print("L1正则化值为:", end="")
print(sess.run(tf.contrib.layers.l1_regularizer(0.5)(weights)))
# 输出为((1)^2+(-2)^2+(-3)^2+(4)^2)/2x0.5=7.5。其中0.5为正则化项的权重。
# TensorFlow会将L2正则化损失值除以2使得求导得到的结果更加1简洁 。
print("L2正则化值为:", end="")
print(sess.run(tf.contrib.layers.l2_regularizer(0.5)(weights)))
结果为:
L1正则化值为:5.0
L2正则化值为:7.5