tensorflow 解决过拟合问题

2018-11-09  本文已影响12人  一心一意弄算法

过拟合

第一个模型简单,第二个模型比较合理,第三个模型则过拟合了,容易导致,模型在训练数据上表现良好,而在测试数据上的表现较差的情况。

正则化特点

都是通过限制权限的大小。
L1:让参数变得更稀疏,即使更多的参数变为0,类似特征提取。
L2:弱参数平方后变的更小,模型优化中几乎可以忽略,比如0.0001的平方。
当然,根据需要可以结合L1和L2一起使用。

L1正则化公式如下:
R(w) = ||w||_1=\sum_i|w_i|
L2正则化公式如下:
R(w) = ||w||_2^2=\sum_i|w_i^2|
结合使用:
R(w) = ||w||_2^2=\sum_i\alpha|w_i|+\beta|w_i^2|
tensorflow代码实战:

#L1,L2demo
w = tf.constant([[1.0,2.],[-2.,4.]])
with tf.Session() as sess:
    print(sess.run(tf.contrib.layers.l1_regularizer(0.5)(w)))
    print(sess.run(tf.contrib.layers.l2_regularizer(0.5)(w)))
    print(sess.run(tf.contrib.layers.l1_l2_regularizer(scale_l1=0.5,scale_l2=0.5)(w)))
out:
4.5
6.25
10.75

由demo可以看出,tensorflow 会将L2正则的值除以2.

上一篇下一篇

猜你喜欢

热点阅读