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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dropout理解(一)

發(fā)布時(shí)間:2024/9/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dropout理解(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Dropout原理

1.概述
作用:防止過擬合
方法:訓(xùn)練時(shí),隨機(jī)停止某些神經(jīng)元的參數(shù)訓(xùn)練
2. Dropout工作流程及使用
2.1 Dropout具體工作流程
假設(shè)我們要訓(xùn)練這樣一個(gè)神經(jīng)網(wǎng)絡(luò),如圖2所示。

上圖表示標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)。

輸入是x輸出是y,正常的流程是:我們首先把x通過網(wǎng)絡(luò)前向傳播,然后把誤差反向傳播以決定如何更新參數(shù)讓網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)。使用Dropout之后,過程變成如下:
(1)首先隨機(jī)(臨時(shí))刪掉網(wǎng)絡(luò)中一半的隱藏神經(jīng)元,輸入輸出神經(jīng)元保持不變(圖3中虛線為部分臨時(shí)被刪除的神經(jīng)元)

(2) 然后把輸入x通過修改后的網(wǎng)絡(luò)前向傳播,然后把得到的損失結(jié)果通過修改的網(wǎng)絡(luò)反向傳播。一小批訓(xùn)練樣本執(zhí)行完這個(gè)過程后,在沒有被刪除的神經(jīng)元上按照隨機(jī)梯度下降法更新對應(yīng)的參數(shù)(w,b)。

(3)然后繼續(xù)重復(fù)這一過程:

. 恢復(fù)被刪掉的神經(jīng)元(此時(shí)被刪除的神經(jīng)元保持原樣,而沒有被刪除的神經(jīng)元已經(jīng)有所更新)

. 從隱藏層神經(jīng)元中隨機(jī)選擇一個(gè)一半大小的子集臨時(shí)刪除掉(備份被刪除神經(jīng)元的參數(shù))。

. 對一小批訓(xùn)練樣本,先前向傳播然后反向傳播損失并根據(jù)隨機(jī)梯度下降法更新參數(shù)(w,b) (沒有被刪除的那一部分參數(shù)得到更新,刪除的神經(jīng)元參數(shù)保持被刪除前的結(jié)果)。

Dropout在神經(jīng)網(wǎng)絡(luò)中的使用

Dropout的具體工作流程上面已經(jīng)詳細(xì)的介紹過了,但是具體怎么讓某些神經(jīng)元以一定的概率停止工作(就是被刪除掉)?代碼層面如何實(shí)現(xiàn)呢?

下面,我們具體講解一下Dropout代碼層面的一些公式推導(dǎo)及代碼實(shí)現(xiàn)思路。

(1)在訓(xùn)練模型階段

無可避免的,在訓(xùn)練網(wǎng)絡(luò)的每個(gè)單元都要添加一道概率流程。

圖4:標(biāo)準(zhǔn)網(wǎng)絡(luò)和帶有Dropout網(wǎng)絡(luò)的比較

對應(yīng)的公式變化如下:

. 沒有Dropout的網(wǎng)絡(luò)計(jì)算公式:

. 采用Dropout的網(wǎng)絡(luò)計(jì)算公式:


上面公式中Bernoulli函數(shù)是為了生成概率r向量,也就是隨機(jī)生成一個(gè)0、1的向量。

代碼層面實(shí)現(xiàn)讓某個(gè)神經(jīng)元以概率p停止工作,其實(shí)就是讓它的激活函數(shù)值以概率p變?yōu)?。比如我們某一層網(wǎng)絡(luò)神經(jīng)元的個(gè)數(shù)為1000個(gè),其激活函數(shù)輸出值為y1、y2、y3、…、y1000,我們dropout比率選擇0.4,那么這一層神經(jīng)元經(jīng)過dropout后,1000個(gè)神經(jīng)元中會有大約400個(gè)的值被置為0。

注意: 經(jīng)過上面屏蔽掉某些神經(jīng)元,使其激活值為0以后,我們還需要對向量y1……y1000進(jìn)行縮放,也就是乘以1/(1-p)。如果你在訓(xùn)練的時(shí)候,經(jīng)過置0后,沒有對y1……y1000進(jìn)行縮放(rescale),那么在測試的時(shí)候,就需要對權(quán)重進(jìn)行縮放,操作如下。

在測試模型階段

預(yù)測模型的時(shí)候,每一個(gè)神經(jīng)單元的權(quán)重參數(shù)要乘以概率p。

圖5:預(yù)測模型時(shí)Dropout的操作
測試階段Dropout公式:

3.通過代碼理解

# coding:utf-8 import numpy as np# dropout函數(shù)的實(shí)現(xiàn),函數(shù)中,x是本層網(wǎng)絡(luò)的激活值。Level就是dropout就是每個(gè)神經(jīng)元要被丟棄的概率。 def dropout(x, level):if level < 0. or level >= 1: #level是概率值,必須在0~1之間raise ValueError('Dropout level must be in interval [0, 1[.')retain_prob = 1. - level# 我們通過binomial函數(shù),生成與x一樣的維數(shù)向量。binomial函數(shù)就像拋硬幣一樣,我們可以把每個(gè)神經(jīng)元當(dāng)做拋硬幣一樣# 硬幣 正面的概率為p,n表示每個(gè)神經(jīng)元試驗(yàn)的次數(shù)# 因?yàn)槲覀兠總€(gè)神經(jīng)元只需要拋一次就可以了所以n=1,size參數(shù)是我們有多少個(gè)硬幣。random_tensor = np.random.binomial(n=1, p=retain_prob, size=x.shape) #即將生成一個(gè)0、1分布的向量,0表示這個(gè)神經(jīng)元被屏蔽,不工作了,也就是dropout了print(random_tensor)x *= random_tensorprint(x)x /= retain_probreturn x#對dropout的測試,大家可以跑一下上面的函數(shù),了解一個(gè)輸入x向量,經(jīng)過dropout的結(jié)果 x=np.asarray([1,2,3,4,5,6,7,8,9,10],dtype=np.float32) print(dropout(x,0.4)) import torch import torch.nn as nn import torch.nn.functional as Fclass LinearFC(nn.Module):def __init__(self):super(LinearFC, self).__init__()self.fc = nn.Linear(3, 2)def forward(self, input):out = self.fc(input)out = F.dropout(out, p=0.5, training=self.training)return outNet = LinearFC() x = torch.randint(10, (2, 3)).float() # 隨機(jī)生成不大于10的整數(shù),轉(zhuǎn)為float, 因?yàn)閚n.linear需要float類型數(shù)據(jù) Net.train() output = Net(x) print(output)# train the Net
  • 第一步Net = LinearFC(),生成WWWbbb:
  • W=tensor([[-0.5347, 0.3559, 0.0637],[-0.5676, -0.0257, 0.1802]], requires_grad=True) b=tensor([0.4141, 0.4688], requires_grad=True)
  • 第二步x = torch.randint(10, (2, 3)).float(),隨機(jī)生成不大于10的整數(shù),轉(zhuǎn)為float, 因?yàn)閚n.linear需要float類型數(shù)據(jù)
  • x=tensor([[3., 2., 0.],[2., 6., 8.]])
  • 第三步 output = Net(x) out = self.fc(input)進(jìn)入forward, out=x×WT+bout = x \times W^T + bout=x×WT+b,代碼實(shí)現(xiàn):torch.mm(x, Net.fc.weight.t()) + Net.fc.bias
  • tensor([[-0.4783, -1.2855],[ 1.9898, 0.6210]], grad_fn=<AddBackward0>)
  • 第四步,dropout,公式out=out/(1?0.5)在以0.5概率置為0out = out/(1-0.5)在以0.5概率置為0out=out/(1?0.5)0.50
  • (torch.mm(x, Net.fc.weight.t()) + Net.fc.bias)/(1-0.5)= tensor([[-0.9565, -2.5710],[ 3.9796, 1.2420]], grad_fn=<DivBackward0>) out= tensor([[-0.0000, -0.0000],[0.0000, 1.2420]], grad_fn=<MulBackward0>)

    可以看到經(jīng)過dropout之后,數(shù)據(jù)變?yōu)?#xff1a;tensor([[-0.0000, -0.0000], [0.0000, 1.2420]], grad_fn=<MulBackward0>)

    轉(zhuǎn)載:https://blog.csdn.net/powu0193/article/details/99573632

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久午夜网| 天天爽夜夜爽夜夜爽精品视频 | 日本xxxx18高清hd | 色婷婷视频网 | 亚洲不卡av一区二区 | 日韩欧美亚洲一区二区 | 天堂中文在线资源 | 免费看的黄色录像 | 美女一区| v8888av| 操白虎逼 | 亚洲免费一级片 | 欧美成人黄色小说 | 午夜激情影院 | 午夜理伦三级做爰电影 | 另类小说五月天 | 国产精品av免费观看 | 日韩在线免费观看视频 | 婷婷久久久久 | 国内自拍在线观看 | 91中文字幕在线 | 日本在线高清 | 福利片在线观看 | 岛国av网址| 青青草国产在线 | 日韩精品一区在线播放 | 亚洲福利二区 | 日本一区二区免费高清视频 | 97在线观看视频免费 | 国产精品黄色在线观看 | 亚洲欧美999 | a一级网站 | www日本www | 自拍愉拍 | 日韩亚洲欧美中文字幕 | 久久久精品视频免费 | 国产精品亚洲欧美在线播放 | 亚洲日本不卡 | 国产大片b站 | 国产又大又粗又爽的毛片 | 欧美一区二区三区久久妖精 | 日本少妇做爰全过程毛片 | 成人免费无码大片a毛片抽搐色欲 | 亚洲成人久| a在线免费观看 | 日本黄色精品 | 夜夜爱av | 欧美极品视频在线观看 | 国产女主播喷水高潮网红在线 | 亚洲97在线 | 日韩av高清无码 | 人妻精品无码一区二区 | 在线视频资源 | 天天天天操 | 69xav | 被各种性器调教到哭vk | 国产区网址 | 干老太太视频 | 熟妇人妻系列aⅴ无码专区友真希 | 手机在线观看av片 | 亚洲免费福利视频 | 国产精品videos | 日本公与丰满熄 | 国产精品久久久久久免费免熟 | 人人射影院 | 四虎一级片| 丰满少妇一区 | 日韩中文字幕在线一区 | 午夜影院免费视频 | 日韩成人免费观看 | 久久精品10 | 青青草原亚洲视频 | 久久久99精品免费观看 | a一级黄色片 | 欧美xx在线 | 欧美特级黄色录像 | 中文字幕人妻一区二区三区在线视频 | 女人黄色片 | 日韩欧美国产中文字幕 | 欧美粗大猛烈 | 在线免费国产视频 | 久久久精品人妻无码专区 | 天天艹日日干 | 欧美日韩黄色一区二区 | 亚洲中文字幕久久无码 | 欧美疯狂做受 | 久久综合狠狠综合久久综合88 | 国产福利av| 色哟哟免费视频 | 中文字幕永久在线 | 免费欧美一级视频 | 中文精品在线观看 | 777免费视频 | 欧洲精品一区二区三区久久 | 亚洲视频网站在线观看 | 动漫美女被到爽 | 久久五月天av | 日女人网站 | 亚洲一区二区三区观看 |