tensorflow學習筆記3
4.2學習率
learning_rate,表示每次引數更新的幅度大小。過大會導致待優化的引數在最小值附近波動,不收斂;而學習率過小,則收斂過慢。
公式為:
程式碼如下:
import tensorflow as tf
w = tf.Variable(tf.constant(5,dtype=tf.float32))
loss = tf.square(w+1)
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op)
for i in range (40):
sess.run(train_step)
w_val = sess.run(w)
loss_val = sess.run(loss)
print ("after %s steps: w is %f, loss is %f."%(i,w_val,loss_val))
指數衰減學習率
用函式表述為
global_step = tf.Variable(0,trainable = False)
learning_rate = tf.train.exponential_decay(
LEARNING_RATE_BASE,#學習率初始值
global_step,#當前訓練輪數,為不可訓練參量
LEARNING_RATE_STEP,#更新學習率的頻率
LEARNING_RATE_DECAY,#學習率衰減率
staircase = True/False#為True時取整數,為階梯型衰減,反之為平滑曲線
4.3滑動平均
通過記錄一段時間內所有引數w和b各自的平均值,可以增強模型的繁華能力。
計算公式為:
影子=衰減率影子+(1-衰減率)引數
其中,衰減率為
程式碼為ema= tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)
其中,前者為滑動平滑率,接近1左右,後者為訓練輪數。ema_op = ema.apply(tf.trainable_variables())
其中,apply函式表示對括號內引數求滑動平均,自變數為把所有待訓練引數彙總為列表。
with tf.control_dependencies([train_step, ema_op]):
train_op = tf.no_op(name = 'train')
正則化
神經網路在訓練過程中可能會出現過擬合的情況,即在訓練集上效果良好,而預測時效果不好,說明泛化能力差。
正則化就是在損失函式之中給每個引數w加上權重,從而引入模型複雜度指標,抑制模型噪聲,減小過擬合。
公式為
loss = loss(y與y_)+REGULARIZER*loss(w)
第二項為超引數,給出引數w在總loss的比例,有不同的取法。
對於,程式碼為loss(w)=tf.contrib.layers.l1_regularizer(REGULARIZER)(w)
對於,程式碼為loss(w)=tf.contrib.layers.l2_regularizer(REGULARIZER)(w)
把正則化修正加入到演算法中用程式碼tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
loss=cem+tf.add_n(tf.get_collection('losses'))
相關文章
- TensorFlow 學習筆記筆記
- TensorFlow學習筆記(二)筆記
- Tensorflow學習筆記一筆記
- Tensorflow學習筆記二筆記
- TensorFlow Java API 學習筆記JavaAPI筆記
- tensorflow學習筆記——DenseNet筆記SENet
- Tensorflow學習筆記No.10筆記
- Tensorflow學習筆記No.11筆記
- Tensorflow學習筆記No.8筆記
- Tensorflow學習筆記No.7筆記
- TensorFlow學習筆記(3)tf.reduce_max,求最大值筆記
- Vue學習筆記3Vue筆記
- Thymeleaf 3學習筆記筆記
- CCNA學習筆記3筆記
- Vue 3 學習筆記Vue筆記
- mysql學習筆記3MySql筆記
- tensorflow學習筆記--embedding_lookup()用法筆記
- TensorFlow學習筆記(1):線性迴歸筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- swift學習筆記《3》-技巧Swift筆記
- docker學習筆記(3)- 映象Docker筆記
- Android學習筆記(3)Android筆記
- Python學習筆記(3)Python筆記
- PL/SQL學習筆記-3SQL筆記
- ruby 字串學習筆記3字串筆記
- Vue3 學習筆記Vue筆記
- Tensorflow學習筆記: 變數及共享變數筆記變數
- Tensorflow學習筆記(8)——input_data.py解析筆記
- 3月23日學習筆記筆記
- 3月25日學習筆記筆記
- G01學習筆記-3筆記
- SpringCloud學習筆記(3)——HystrixSpringGCCloud筆記
- angular學習筆記(七)-迭代3Angular筆記
- angular學習筆記(十四)-$watch(3)Angular筆記
- tensorflow學習筆記1——mac開發環境配置筆記Mac開發環境
- AI學習筆記——Tensorflow中的Optimizer(優化器)AI筆記優化
- tensorflow學習筆記1(程式碼轉自官網)筆記
- JVM學習筆記(3)---OutOfMemory詳解JVM筆記