淺談pytorch中的dropout的概率p
最近需要訓(xùn)練一個(gè)模型,在優(yōu)化模型時(shí)用了dropout函數(shù),為了減少過擬合。
訓(xùn)練的時(shí)候用dropout,測(cè)試的時(shí)候不用dropout。剛開始以為p是保留神經(jīng)元的比率,訓(xùn)練設(shè)置0.5,測(cè)試設(shè)置1,loss根本沒減小過,全設(shè)置成1也是一樣的效果,后來就考慮到是不是p設(shè)置錯(cuò)了。
上網(wǎng)一搜,果然是的!?。的含義理解錯(cuò)了!不是保留的,而是不保留的!
具體的代碼為:
x2 = F.dropout(x1, p)
x1是上一層網(wǎng)絡(luò)的輸出,p是需要?jiǎng)h除的神經(jīng)元的比例。
當(dāng)p=0時(shí),保留全部神經(jīng)元更新。當(dāng)p=1時(shí),神經(jīng)元輸出的值都為0。
補(bǔ)充:Pytorch--Dropout筆記
dropout常常用于抑制過擬合,pytorch也提供了很方便的函數(shù)。但是經(jīng)常不知道dropout的參數(shù)p是什么意思。
在TensorFlow中p叫做keep_prob,就一直以為pytorch中的p應(yīng)該就是保留節(jié)點(diǎn)數(shù)的比例,但是實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)反了,實(shí)際上表示的是不保留節(jié)點(diǎn)數(shù)的比例。
看下面的例子:
a = torch.randn(10,1) >>> tensor([[ 0.0684], [-0.2395], [ 0.0785], [-0.3815], [-0.6080], [-0.1690], [ 1.0285], [ 1.1213], [ 0.5261], [ 1.1664]])
p=0.5
torch.nn.Dropout(0.5)(a) >>> tensor([[ 0.0000], [-0.0000], [ 0.0000], [-0.7631], [-0.0000], [-0.0000], [ 0.0000], [ 0.0000], [ 1.0521], [ 2.3328]])
p=0
torch.nn.Dropout(0)(a) >>> tensor([[ 0.0684], [-0.2395], [ 0.0785], [-0.3815], [-0.6080], [-0.1690], [ 1.0285], [ 1.1213], [ 0.5261], [ 1.1664]])
p=1
torch.nn.Dropout(0)(a) >>> tensor([[0.], [-0.], [0.], [-0.], [-0.], [-0.], [0.], [0.], [0.], [0.]])
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python語法學(xué)習(xí)之正則表達(dá)式的量詞匯總
通過正則的規(guī)則匹配到的信息都是一個(gè)單獨(dú)的字符存到輸出結(jié)果中的,如何更夠根據(jù)字符串中的詞組進(jìn)行匹配呢?因此本文將帶大家學(xué)習(xí)一下正則表達(dá)式中的量詞符號(hào)與組的概念,感興趣的可以了解一下2022-04-04python編碼總結(jié)(編碼類型、格式、轉(zhuǎn)碼)
這篇文章主要介紹了python編碼操作,包括編碼類型、格式、轉(zhuǎn)碼等,并結(jié)合實(shí)例分析了相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2016-07-07Python+Pandas實(shí)現(xiàn)數(shù)據(jù)透視表
對(duì)于數(shù)據(jù)透視表,相信對(duì)于Excel比較熟悉的小伙伴都知道如何使用它。本文將利用Python Pandas實(shí)現(xiàn)數(shù)據(jù)透視表功能,感興趣的可以學(xué)習(xí)一下2022-06-06