详解tf.nn.dropout
tensoflow中有兩個dropout函數(shù)容易混淆
tf.layers.drop函數(shù)定義如下:
tf.layers.dropout(inputs,rate=0.5,noise_shape=None,seed=None,training=False,name=None)在 tf.layer.dropout 中有一個 training 參數(shù):在training=True時,返回應(yīng)用dropout后的輸出;在training=False時,正常返回輸出(沒有dropout)。一般在training過程training=true,即啟動dropout,在每次迭代都rate比例的神經(jīng)元。
tf.nn.dropout是tensorflow常用的函數(shù),它的作用是為了減輕過擬合帶來的問題而使用的函數(shù),它一般用在每個連接層的輸出。
Dropout就是在不同的訓(xùn)練過程中,按照一定概率使得某些神經(jīng)元停止工作。也就是讓每個神經(jīng)元按照一定的概率停止工作,這次訓(xùn)練過程中不更新權(quán)值,也不參加神經(jīng)網(wǎng)絡(luò)的計算。但是它的權(quán)重依然存在,下次更新時可能會使用到它。
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中,可以無限逼近一段非線性連續(xù)函數(shù),但是如果模型網(wǎng)絡(luò)層數(shù)過多或設(shè)置的足夠復(fù)雜,在訓(xùn)練時會出現(xiàn)過擬合(overfitting),就像下圖這樣。
圖中藍(lán)色的線,為了可以涉及到每個點,呈現(xiàn)出了過擬合現(xiàn)象。
盡管它很好的擬合了每一個點的位置,但是曲線是歪歪曲曲,這個的曲線不具有良好的魯棒性,不是我們想要的結(jié)果,在實際工程實驗中,我們更希望得到如黑色線一樣的曲線。
tf.nn.dropout函數(shù)介紹
def dropout(x, keep_prob, noise_shape=None, seed=None, name=None)**x:**上一層傳下載的tensor。(一般用于全連接層后面)
keep_prob:保留keep_prob的神經(jīng)元繼續(xù)工作,其余的停止工作與更新。(在這里并不是真正被丟掉,而是在這一輪的訓(xùn)練中不更新這個神經(jīng)元的權(quán)值,權(quán)值在這一輪訓(xùn)練被保留,下一輪訓(xùn)練可能又會被更新。)
**seed:**整形變量,隨機數(shù)種子。
**name:**指定dropout操作的名字
注意:
總結(jié)
以上是生活随笔為你收集整理的详解tf.nn.dropout的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: influxdb和传统数据库相比
- 下一篇: tf.nn.softmax参数详解以及作