TensorFlow(三)---------正则化

Posted 哈哈丶Stupid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow(三)---------正则化相关的知识,希望对你有一定的参考价值。

   TensorFlow正则化经常被用于Deep-Learn中,泛化数据模型,解决过拟合问题。再深度学习网络只有在有足够大的数据集时才能产生惊人的学习效果。当数据量不够时,过拟合的问题就会经常发生。然而,只选取我们需要的数据量的模型,就会非常难以继续进行泛化和优化。所以正则化技术孕育而生~~~~~~~

   正则化的基本思想是向损失函数添加一个惩罚项用于惩罚大的权重,隐式的减少自由参数的数量。可以达到弹性地适应不同数据量训练的要求而不产生过拟合的问题。~~~~~~


 1 #正则化
 2 import tensorflow as tf
 3 import matplotlib.pyplot as plt
 4 import numpy as np
 5 
 6 data = []
 7 label = []
 8 np.random.seed(0)
 9 for i in range(150):
10     x1 = np.random.uniform(-1,1)
11     x2 = np.random.uniform(0,2)
12     if x1**2+x2**2 <= 1:
13         data.append([np.random.normal(x1,0.1),np.random.normal(x2,0.1)])
14         label.append(0)
15     else:
16         data.append([np.random.normal(x1,0.1),np.random.normal(x2,0.1)])
17         label.append(1)
18 
19 data = np.hstack(data).reshape(-1,2)
20 label = np.hstack(label).reshape(-1,1)
21 plt.scatter(data[:,0],data[:,1],c=label,
22            cmap="RdBu",vmin=-.2,vmax=1.2,edgecolor="white")
23 plt.show()
View Code

2.查看不同迭代中的变量取值的变化

 1 v1 = tf.Variable(0,dtype=tf.float32)
 2 step = tf.Variable(0,trainable=False)
 3 ema = tf.train.ExponentialMovingAverage(0.99,step)
 4 maintain_averages_op = ema.apply([v1])
 5 with tf.Session() as sess:
 6     #初始化
 7     init_op = tf.global_variables_initializer()
 8     sess.run(init_op)
 9     print(sess.run([v1,ema.average(v1)]))
10     #更新变量v1的取值
11     sess.run(tf.assign(v1,5))
12     sess.run(maintain_averages_op)
13     print(sess.run([v1,ema.average(v1)]))
14     #更新step和v1的取值
15     sess.run(tf.assign(step,10000))
16     sess.run(tf.assign(v1,10))
17     sess.run(maintain_averages_op)
18     print(sess.run([v1,ema.average(v1)]))
19     #更新一次v1的滑动平均值
20     sess.run(maintain_averages_op)
21     print(sess.run([v1,ema.average(v1)]))
22    
23 
24 #结果
25 
26 [0.0, 0.0]
27 [5.0, 4.5]
28 [10.0, 4.5549998]
29 [10.0, 4.6094499]
View Code

 

note:优化器optimizer

tf的7种优化器
最常用的: GradientDescentOptimizer

tf.train.Optimizer
tf.train.GradientDescentOptimizer
tf.train.AdadeltaOptimizer
tf.train.AdagradOptimizer
tf.train.AdagradDAOptimizer
tf.train.MomentumOptimizer
tf.train.AdamOptimizer
tf.train.FtrlOptimizer
tf.train.ProximalGradientDescentOptimizer
tf.train.ProximalAdagradOptimizer
tf.train.RMSPropOptimizer

 

以上是关于TensorFlow(三)---------正则化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TensorFlow 中添加正则化?

tensorflow-正则化+指数衰减+滑动平均

TensorFlow API 中的正则化损失是啥?它不与任何其他损失函数对齐

tensorflow-正则化与指数衰减率

79tensorflow计算一个五层神经网络的正则化损失系数防止网络过拟合正则化的思想就是在损失函数中加入刻画模型复杂程度的指标

TensorFlow 过拟合与正则化(regularizer)