日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dropout理解(二)

發布時間:2024/9/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dropout理解(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dropout在做什么

Train時Dropout在做什么?

當dropout(p)時,意味著每個neuron, 有p%的可能性被去除;(這里需要注意的是,不是去除p%的neuron)


我們可以看到的是,每一次進行dropout的時候,網絡的結構都會發生改變,會變成一個比之前thin的網絡結構。

所以,總結一下:dropout在訓練的時候步驟如下:

  • 每次前向傳播時, 去除一些neuron;
  • 網絡的結構發生了改變;
  • 使用新的網絡結構進行訓練;
  • 對于每一個min-batch, 每次都會修改網絡的結構;

Test時Dropout在做什么

在進行test的時候,我們是不進行dropout,同時要修改之前的系數,我們看一下具體的步驟。

  • 不進行dropout(即每個節點都不會被去掉)
  • 同時, 若train時dropout§, 則在test時候, 所有系數需要乘(1-p%);
  • 例如, dropout(0.9), 則最后所有系數需要乘(1-0.9);

下面我們來解釋一下為什么最后所有系數要乘(1-p%),他的最終的目標是為了保持不進行dropout時候網絡輸出的值與進行dropout時,網絡輸出值的期望相同。我們看下面一個具體的例子:

上圖中,我們的Dropout(0.5)。則每個點有50%的可能性被去掉。

原始的結構如藍框所示,則dropout后會有四種不同的可能性,分別如圖左邊的四個小結構所示,其中每個結構的可能性都是1/4。

我們對上面可能的四個結構的輸出求期望,得到1/2×w1×x1+1/2×w2×x2,相當于在原始的網絡的系數上都乘了(1-0.5)。這也就是為什么在最后進行test的時候,所有的系數都需要乘上(1-p)了。

對于線性結構來說,我們都是可以這么進行計算的,即dropout和最后系數乘(1-p)是等價的。這樣大概解釋了一下為什么最后系數要乘(1-p).

Dropout的具體實現

在pytorch中,dropout在train和test的時候不會改變系數,他會直接在訓練的時候,將dropout層的輸出的值,除(1-p),這樣就不需要改變系數了。在test的時候只需要不進行dropout即可。

下面是一個簡答的測試結果的圖片:

我們看到,在dropout(0.9),且在train模式下,輸出的值會直接乘10,相當于除(1-0.9)。在test的時候,就會直接關閉dropout。

在pytorch中,我們可以通過如下的方式控制model是train還是test模式:

model.train() # Set model to training mode model.eval() # Set model to evaluate mode 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的dropout理解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。