tf.nn.dropout 防止 overfitting
一、 Dropout原理簡述:
tf.nn.dropout是TensorFlow裡面為了防止或減輕過擬合而使用的函數,它一般用在全連接層。
Dropout就是在不同的訓練過程中隨機扔掉一部分神經元。也就是讓某個神經元的激活值以一定的機率 p,讓其停止工作,這次訓練過程中不更新權值,也不參加神經網絡的計算。但是它的權重得保留下來(只是暫時不更新而已),因為下次樣本輸入時它可能又得工作了。示意圖如下:
Fig.1 (a) 為 full-connected neural network 示意圖;(b) 為使用 tf.nn.dropout() 後,每個神經元隨機 (機率 p) 停止運作
但在測試及驗證中:每個神經元都要參加運算,但其輸出要乘以概率 p。
二、tf.nn.dropout函數說明
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None,name=None)
上面方法中常用的是前兩個參數:
第一個參數x:指 input data
第二個參數 keep_prob : 設置神經元被選中的概率 p,在初始化時 keep_prob 是一個 place holder,
keep_prob = tf.placeholder(tf.float32) 。
tensorflow 在 run 時設置 keep_prob 具體的值 (0到1之間),例如 keep_prob : 0.5
Reference
[0] https://blog.csdn.net/huahuazhu/article/details/73649389