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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM