第2章 2.2 構(gòu)建網(wǎng)絡(luò)_第1頁(yè)
第2章 2.2 構(gòu)建網(wǎng)絡(luò)_第2頁(yè)
第2章 2.2 構(gòu)建網(wǎng)絡(luò)_第3頁(yè)
第2章 2.2 構(gòu)建網(wǎng)絡(luò)_第4頁(yè)
第2章 2.2 構(gòu)建網(wǎng)絡(luò)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

構(gòu)建網(wǎng)絡(luò)構(gòu)建網(wǎng)絡(luò)是深度學(xué)習(xí)最重要的一個(gè)步驟。若網(wǎng)絡(luò)太簡(jiǎn)單則無(wú)法學(xué)習(xí)到足夠豐富的特征,若網(wǎng)絡(luò)太復(fù)雜則容易過(guò)擬合。而且,對(duì)不同的數(shù)據(jù),要選擇合適的網(wǎng)絡(luò)結(jié)構(gòu)才能取得較好的結(jié)果。構(gòu)建網(wǎng)絡(luò)1激活函數(shù)目錄常用的網(wǎng)絡(luò)構(gòu)建方法2構(gòu)建基于CNN的貓狗分類網(wǎng)絡(luò)3在深度學(xué)習(xí)中,構(gòu)建網(wǎng)絡(luò)通常是搭建一個(gè)完整的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。神經(jīng)網(wǎng)絡(luò)(NeuralNetworks)是一種應(yīng)用類似于大腦神經(jīng)突觸連接的結(jié)構(gòu)進(jìn)行信息處理的算法。神經(jīng)網(wǎng)絡(luò)已經(jīng)被用于解決分類、回歸等問(wèn)題,同時(shí)被運(yùn)用在機(jī)器視覺(jué)、語(yǔ)音識(shí)別等應(yīng)用領(lǐng)域上。神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性的簡(jiǎn)單單元組成的廣泛并行互連網(wǎng)絡(luò),它的結(jié)構(gòu)能夠模擬生物神經(jīng)系統(tǒng)對(duì)真實(shí)世界的交互反應(yīng)。常用的網(wǎng)絡(luò)構(gòu)建方法一個(gè)簡(jiǎn)單的神經(jīng)元結(jié)構(gòu)如圖所示。在圖中,、和表示權(quán)重,表示偏置項(xiàng),表示激活函數(shù),、和是神經(jīng)元的輸入值,輸出值。常用的網(wǎng)絡(luò)構(gòu)建方法將多個(gè)神經(jīng)元按一定的層次結(jié)構(gòu)連接起來(lái),即可得到一個(gè)神經(jīng)網(wǎng)絡(luò)。使用神經(jīng)網(wǎng)絡(luò)需要確定網(wǎng)絡(luò)連接的拓?fù)浣Y(jié)構(gòu)、神經(jīng)元的特征和學(xué)習(xí)規(guī)則等。常見(jiàn)的神經(jīng)網(wǎng)絡(luò)的層級(jí)結(jié)構(gòu)如圖所示,每層神經(jīng)元與下一層的神經(jīng)元全部互連,同層之間神經(jīng)元不存在連接關(guān)系。圖為簡(jiǎn)單的全連接神經(jīng)網(wǎng)絡(luò),其中輸入層神經(jīng)元接收信號(hào),最終輸出結(jié)果由輸出層神經(jīng)元輸出。常用的網(wǎng)絡(luò)構(gòu)建方法隱含層是指除了輸入、輸出層以外的其他層,是模型的黑箱部分,通常可解釋性較差。值得注意的是,如果單個(gè)隱含層網(wǎng)絡(luò)不能滿足實(shí)際生產(chǎn)需求,那么可在網(wǎng)絡(luò)中設(shè)置多個(gè)隱含層。深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中的常見(jiàn)的網(wǎng)絡(luò)層有卷積層、池化層、正則化層、歸一化層和全連接層。網(wǎng)絡(luò)層的先后順序通常是,卷積層優(yōu)先構(gòu)造,池化層放置在卷積層之后,正則化層和歸一化層放置在整個(gè)網(wǎng)絡(luò)中間偏后的位置,全連接層放置在網(wǎng)絡(luò)的后端或多個(gè)卷積層后。在PyTorch框架中,常用的構(gòu)建網(wǎng)絡(luò)的方法有繼承Module類和使用Sequential容器。常用的網(wǎng)絡(luò)構(gòu)建方法Module類是PyTorch框架提供的一個(gè)基類,在搭建神經(jīng)網(wǎng)絡(luò)時(shí)候可以通過(guò)繼承Module類,使得搭建網(wǎng)絡(luò)的過(guò)程變得簡(jiǎn)單。繼承Module類構(gòu)建網(wǎng)絡(luò),其中__init__()方法初始化了網(wǎng)絡(luò)中需要使用的網(wǎng)絡(luò)層,完全相同的網(wǎng)絡(luò)層可以僅初始化一次,但多次進(jìn)行調(diào)用,forward()方法用于設(shè)置網(wǎng)絡(luò)中數(shù)據(jù)的傳播,并返回網(wǎng)絡(luò)的輸出。從Layer列中可以查看所構(gòu)建網(wǎng)絡(luò)的結(jié)構(gòu),從OutputShape列中可以查看每層網(wǎng)絡(luò)輸出數(shù)據(jù)的維度。從Param列中可以查看每層網(wǎng)絡(luò)的參數(shù)個(gè)數(shù)。繼承Module類構(gòu)建網(wǎng)絡(luò)Sequential是一個(gè)有序的容器,網(wǎng)絡(luò)層將按照在傳入構(gòu)造器的順序依次被添加到計(jì)算圖中執(zhí)行,使用Sequential容器構(gòu)建網(wǎng)絡(luò)。同時(shí)以神經(jīng)網(wǎng)絡(luò)模塊為元素的有序字典也可以作為Sequential容器的傳入?yún)?shù)。使用Sequential容器構(gòu)建網(wǎng)絡(luò)1激活函數(shù)目錄常用的網(wǎng)絡(luò)構(gòu)建方法2構(gòu)建基于CNN的貓狗分類網(wǎng)絡(luò)3在神經(jīng)網(wǎng)絡(luò)中,全連接層只是對(duì)上層輸入進(jìn)行線性變換,而多個(gè)線性變換的疊加仍然是一個(gè)線性變換,即含有多個(gè)全連接層的神經(jīng)網(wǎng)絡(luò)與僅含輸出層的單層神經(jīng)網(wǎng)絡(luò)等價(jià)。解決問(wèn)題的一個(gè)方法是,在全連接層后增加一個(gè)非線性的變換,將非線性變換后的結(jié)果作為下一個(gè)全連接層的輸入。這個(gè)非線性函數(shù)被稱為激活函數(shù)(ActivationFunction),神經(jīng)網(wǎng)絡(luò)可以逼近任意函數(shù)的能力與激活函數(shù)的使用不可分割。常見(jiàn)的激活函數(shù)有ReLU、Sigmoid、Tanh和Softmax等。激活函數(shù)線性整流函數(shù)(RectifiedLinearUnit,ReLU),又稱修正線性單元,是一種人工神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù),通常指代以斜坡函數(shù)及其變種為代表的非線性函數(shù)。ReLU函數(shù)的表達(dá)式如式所示,其中x為神經(jīng)元的輸入值。激活函數(shù)1.ReLU函數(shù)ReLU函數(shù)的幾何表達(dá)如圖所示。由圖可知,當(dāng)輸入為正時(shí),ReLU函數(shù)的輸入與輸出均始終保持線性關(guān)系,當(dāng)輸入趨于正無(wú)窮時(shí),輸出也趨于正無(wú)窮;當(dāng)輸入為負(fù)值時(shí),輸出為0。激活函數(shù)ReLU函數(shù)的優(yōu)點(diǎn)如下。反向傳播時(shí),可以避免梯度消失。使一部分神經(jīng)元的輸出為0,形成稀疏網(wǎng)絡(luò),減少了參數(shù)的相互依存關(guān)系,緩解了過(guò)擬合問(wèn)題的發(fā)生。求導(dǎo)簡(jiǎn)單,整個(gè)過(guò)程的計(jì)算量節(jié)省很多。ReLU的缺點(diǎn)如下。左側(cè)神經(jīng)元為0,導(dǎo)致部分神經(jīng)元死亡,不再更新。輸出非負(fù),所有參數(shù)的更新方向都相同,可能導(dǎo)致梯度下降時(shí)出現(xiàn)震蕩。激活函數(shù)relu類的語(yǔ)法格式如下。torch.nn.functional.relu(input,inplace=False)relu類的常用參數(shù)說(shuō)明如表所示。激活函數(shù)參數(shù)名稱說(shuō)明input接收tensor數(shù)據(jù),表示輸入值,無(wú)默認(rèn)值inplace接收bool,表示計(jì)算softmax的維度數(shù),默認(rèn)值為FalseLeakyReLU激活函數(shù)是ReLU激活函數(shù)的變式,主要是為了修復(fù)ReLU激活函數(shù)中負(fù)軸為0導(dǎo)致的問(wèn)題。LeakyReLU激活函數(shù)的負(fù)軸保留了非常小的常數(shù),使得輸入信息小于0時(shí),信息得到保留。LeakyReLU函數(shù)的表達(dá)式如式所示,其中x為神經(jīng)元的輸入值,α為非負(fù)的小數(shù)。激活函數(shù)2.LeakyReLU函數(shù)LeakyReLU函數(shù)的幾何表達(dá)如圖所示。leaky_relu類的語(yǔ)法格式如下,leaky_relu類的常用參數(shù)說(shuō)明與torch.nn.functional.relu類一致。torch.nn.functional.leaky_relu(input,negative_slope=0.01,inplace=False)激活函數(shù)Sigmoid函數(shù)是一個(gè)在生物學(xué)中常見(jiàn)的S型函數(shù),也稱為S型生長(zhǎng)曲線。在信息科學(xué)中,由于其單增以及反函數(shù)單增等性質(zhì),Sigmoid函數(shù)常被用作神經(jīng)網(wǎng)絡(luò)的閾值函數(shù),將變量映射到0到1之間。Sigmoid函數(shù)的表達(dá)式如式所示,其中x為神經(jīng)元的輸入值。激活函數(shù)3.Sigmoid函數(shù)Sigmoid函數(shù)的幾何表達(dá)如圖所示。由圖可知,縱坐標(biāo)的范圍在0~1的區(qū)間內(nèi),隨著橫坐標(biāo)值從左往右增大,曲線的縱坐標(biāo)值從0無(wú)限趨近于1,表示Sigmoid函數(shù)的輸出范圍是0到1,即對(duì)每個(gè)神經(jīng)元的輸出進(jìn)行了歸一化。由于概率的取值范圍是0到1,因此Sigmoid函數(shù)非常適合用在以預(yù)測(cè)概率作為輸出的模型中。激活函數(shù)Sigmoid優(yōu)點(diǎn)如下。Sigmoid的取值范圍為(0,1),而且是單調(diào)遞增,比較容易優(yōu)化。Sigmoid求導(dǎo)比較容易,可以直接推導(dǎo)得出。Sigmoid缺點(diǎn)如下。Sigmoid函數(shù)收斂比較緩慢。由于Sigmoid是軟飽和,容易產(chǎn)生梯度消失,對(duì)于深度網(wǎng)絡(luò)訓(xùn)練不太適合,由上頁(yè)圖可知,當(dāng)x趨于無(wú)窮大時(shí),會(huì)使導(dǎo)數(shù)趨于0。sigmoid類的語(yǔ)法格式如下,其中參數(shù)“input”表示輸入值。torch.nn.functional.sigmoid(input)激活函數(shù)Tanh函數(shù)是雙曲正切激活函數(shù)。Tanh函數(shù)的表達(dá)式如式所示,其中x為神經(jīng)元的輸入值。激活函數(shù)4.Tanh函數(shù)Tanh函數(shù)的幾何表達(dá)如圖所示。由圖可知,當(dāng)橫坐標(biāo)值趨于負(fù)無(wú)窮時(shí),縱坐標(biāo)值無(wú)限趨近于-1。當(dāng)橫坐標(biāo)值趨于正無(wú)窮時(shí),縱坐標(biāo)值無(wú)限趨近于1。當(dāng)輸入的絕對(duì)值大于5時(shí),輸出幾乎是平滑的并且梯度較小,不利于權(quán)重更新。激活函數(shù)Tanh函數(shù)跟Sigmoid函數(shù)的區(qū)別在于輸出間隔,Tanh的輸出間隔為2,并且整個(gè)函數(shù)以0為中心。在一般的二元分類問(wèn)題中,Tanh函數(shù)常用于隱藏層,而Sigmoid函數(shù)常用于輸出層。但這并不是固定的,需要根據(jù)特定問(wèn)題進(jìn)行調(diào)整。激活函數(shù)Tanh優(yōu)點(diǎn)如下。函數(shù)輸出以(0,0)為中心。收斂速度相對(duì)于Sigmoid更快。Tanh缺點(diǎn)如下。Tanh并沒(méi)有解決Sigmoid梯度消失的問(wèn)題。含有較多的冪運(yùn)算,增加計(jì)算所需的時(shí)間。tanh類的語(yǔ)法格式如下,其中參數(shù)“input”表示輸入值。torch.nn.functional.tanh(input)激活函數(shù)Softmax函數(shù)常在神經(jīng)網(wǎng)絡(luò)輸出層充當(dāng)激活函數(shù),將輸出層的值映射到(0,1)區(qū)間,將神經(jīng)元輸出構(gòu)造成概率分布,用于多分類問(wèn)題中,Softmax激活函數(shù)映射值越大,則真實(shí)類別可能性越大。Softmax函數(shù)的表達(dá)式如式所示,其中i為輸入神經(jīng)元的第i個(gè)元素。

由式可知,Softmax函數(shù)為指數(shù)形式的函數(shù),且映射后的數(shù)值受映射前所有數(shù)值的影響。激活函數(shù)5.Softmax函數(shù)Softmax優(yōu)點(diǎn)如下。指數(shù)函數(shù)求導(dǎo)的時(shí)候比較方便,加快模型的訓(xùn)練。能夠?qū)⑤敵鲋道_(kāi)距離,使不同類間的區(qū)別更明顯。Softmax缺點(diǎn)如下。通過(guò)Softmax函數(shù)計(jì)算得到的數(shù)值有可能會(huì)變得過(guò)大從而導(dǎo)致溢出。輸入均為負(fù)時(shí),可能會(huì)出現(xiàn)梯度為0。激活函數(shù)oftmax類的語(yǔ)法格式如下。torch.nn.functional.softmax(input,dim=None,_stacklevel=3,dtype=None)softmax類的常用參數(shù)及其說(shuō)明如表所示。激活函數(shù)參數(shù)名稱說(shuō)明input接收tensor數(shù)據(jù),表示輸入值,無(wú)默認(rèn)值dim接收int,表示計(jì)算softmax的維度數(shù),無(wú)默認(rèn)值dtype接收str,表示所需的數(shù)據(jù)類型的返回張量,無(wú)默認(rèn)值1激活函數(shù)目錄常用的網(wǎng)絡(luò)構(gòu)建方法2構(gòu)建基于CNN的貓狗分類網(wǎng)絡(luò)3搭建3種不同的CNN網(wǎng)絡(luò)進(jìn)行測(cè)試,首先搭建一個(gè)經(jīng)典CNN網(wǎng)絡(luò),包含兩個(gè)卷積層、兩個(gè)池化層、一個(gè)全連接層和一個(gè)丟棄層。丟棄層的存在是為了防止過(guò)擬合,可以視情況保留或刪除。其次是搭建一個(gè)簡(jiǎn)單的VGG網(wǎng)絡(luò),包含8個(gè)卷積層、8個(gè)池化層、1個(gè)全連接層和1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論