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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习03——CNN

發(fā)布時間:2023/12/10 pytorch 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习03——CNN 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

說明:本系列是七月算法深度學(xué)習(xí)課程的學(xué)習(xí)筆記

文章目錄

  • 1神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)
    • 1.1 深度神經(jīng)網(wǎng)絡(luò)適合計算機視覺處理嗎
    • 1.2CNN的結(jié)構(gòu)
      • 1.2.1 數(shù)據(jù)輸入層
      • 1.2.2 卷積層
      • 1.2.3 激勵層
      • 1.2.3 池化層
      • 1.2.4 全連接層
    • 1.3CNN的訓(xùn)練算法
    • 1.4CNN的優(yōu)缺點
  • 2正則化與Droupout
  • 3典型結(jié)構(gòu)與訓(xùn)練調(diào)優(yōu)

1神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)

1.1 深度神經(jīng)網(wǎng)絡(luò)適合計算機視覺處理嗎

深度神經(jīng)網(wǎng)絡(luò)簡稱DNN,卷積神經(jīng)網(wǎng)絡(luò)簡稱CNN。

DNN的每一層與后面一層都是全連接。如果輸入層是3維,隱層1有4個神經(jīng)元。那從輸入層到隱層1會有35=15個參數(shù)。如果隱層2有4個神經(jīng)元,從隱層1到隱層2,需要44=16個參數(shù)。

在圖像視頻處理中,輸入是非常大的。例如一張圖片可能的輸入是32x32x3,也就是一張長32,寬32的彩色圖片。如果輸入層有1萬張圖片用于訓(xùn)練,那參數(shù)就是=307210000維(在圖像處理中一般會把 原始的輸入矩陣做flatten,變?yōu)橄蛄?#xff09;。這是非常大的一個數(shù)。每一個隱層神經(jīng)元數(shù)量實際中不會太少,因為太少就很難捕捉到重要信息,例如4000,參數(shù)量變?yōu)?0003072*10000。這是一個很大的數(shù)字。這還只是一層。參數(shù)量大,在工程上壓力大,計算、加載、存儲壓力都很大。參數(shù)量大,也很容易過擬合。所以DNN不適合。CNN可以。

1.2CNN的結(jié)構(gòu)

CNN為什么適合計算機視覺處理呢?先看下CNN的結(jié)構(gòu)。

一個CNN包含:數(shù)據(jù)輸入層/input layer+卷積計算層/conv layer、激勵層activation layer、池化層 pooling layer、全連接層 FC layer、Batch Normalization層(可能有)。

1.2.1 數(shù)據(jù)輸入層

有3種常見的數(shù)據(jù)處理方式。
1 去均值:把數(shù)據(jù)的各個維度都中心化到0,相當于沒有了截距。

2 歸一化:把數(shù)據(jù)的各個維度都歸一化到同樣的范圍,便于梯度計算,各個維度收斂速度一致。
常見的歸一化的方法有:
min-max標準化,將數(shù)據(jù)歸一到[0,1]范圍內(nèi)。x?=x?minmax?minx^*=\dfrac{x-min}{max-min}x?=max?minx?min?
z-score標準化:處理后數(shù)據(jù)變?yōu)榉蠘藴收龖B(tài)分布。x?=x?μσx^*=x-\mu\sigmax?=x?μσ,其中μ為所有樣本數(shù)據(jù)的均值,σ為所有樣本數(shù)據(jù)的標準差。

3 PCA/白化:PCA 降維 。白化:降維之后的各個維度可能幅度不一致,這里再做一次歸一化。

注意:這里需要說明的是如果在訓(xùn)練集上做了什么操作,在測試集或者預(yù)測的時候也需要做同樣的處理。可以使用樣本的歸一化的值(均值、方差等),做歸一化。

1.2.2 卷積層

卷積層的幾個核心概念:局部關(guān)聯(lián)、 窗口滑動。

局部關(guān)聯(lián)是指用輸入層的一小塊區(qū)域與下一層的每個神經(jīng)元做內(nèi)積。這塊小區(qū)域被稱為一個窗口。一個窗口計算完,按照一定的步長移動窗口,直至計算完成。滑動過程中遇到最后一次計算,不夠窗口寬度,可以填充0,補充完整。

下一層神經(jīng)元的個數(shù)被稱為深度。
下一層中每個神經(jīng)元的連接權(quán)重是固定的。如圖中下一層有5個神經(jīng)元,那就是5組參數(shù)。每一組參數(shù)是會與窗口中的數(shù)據(jù)做內(nèi)積,如果窗口是一個3x3x3的大小,那一個神經(jīng)元的參數(shù)個數(shù)就是3x3x3。這一層參數(shù)總個數(shù)是3x3x3x5。這樣參數(shù)的數(shù)量與DNN(32x32x3x5)相比就少了很多。

一組固定的權(quán)重與不同的窗口內(nèi)數(shù)據(jù)做內(nèi)積,這個過程稱為卷積。

1.2.3 激勵層

激勵層:把卷積層的輸出做非線性變換。否則無論加多少個隱層,這個符合函數(shù)還是線性的。是不能形成彎曲的曲線,在某些數(shù)據(jù)上是沒法分割的。
常用的激勵函數(shù)有:sigmoid、tanh(雙曲正切)、Relu、Leaky Relu、ELU、Maxout
只要神經(jīng)網(wǎng)絡(luò)正常,選擇哪個激勵函數(shù)不影響最后的結(jié)果。
慎用sigmoid函數(shù),優(yōu)先選擇Relu,可以繼續(xù)嘗試Leaky Relu、Maxout。

1.2.3 池化層

池化層:夾在連續(xù)的卷積層中間。主要起到壓縮數(shù)據(jù)和參數(shù)的作用,可以防止過擬合。

可以做池化的原因是發(fā)現(xiàn)將一個224x224的特征可視化之后發(fā)現(xiàn)降低到112x112,特征不會丟失很多。

可以采取的池化方法是max pooling和average pooling。

相當于給一個圖像做了模糊化。減少了數(shù)據(jù)量,對下一層就意味著減少了輸入的參數(shù)量。同時因為模糊化了,降低過擬合的風(fēng)險。

1.2.4 全連接層

全連接:兩層之間所有神經(jīng)元都有權(quán)重鏈接。通常全連接層放在CNN的尾部。

一個典型的CNN結(jié)構(gòu)=INPUT +[[CONV->RELU]*N->POOLING?]*M+[FC->RELU]*K+FC

1.3CNN的訓(xùn)練算法

先定義loass function:衡量和實際結(jié)構(gòu)之間的差距
找到最小化損失函數(shù)的W和b,CNN中使用的是SGD
利用BP 鏈式法則求導(dǎo),求出dw和db(將錯誤信息回傳到每一層)
利用SGD/隨機梯度下降,迭代更新W和b(學(xué)習(xí)到新一輪知識)

1.4CNN的優(yōu)缺點

優(yōu)點:共享卷積核,優(yōu)化計算量;
   無需手動選擇特征,訓(xùn)練好權(quán)重即得特征;
   深層次的網(wǎng)絡(luò)抽取圖像信息豐富,表達效果好。
缺點:需要調(diào)參、計算量大
   物理含義不明確

2正則化與Droupout

原因:神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力過強,可能會過擬合
傳統(tǒng)方式可以使用L1、L2正則化,在NN中是使用dropout。
Dropout正則化:別一次開啟所有學(xué)習(xí)單元。給每個神經(jīng)元安了一個開關(guān),這個開關(guān)會以一定的概率關(guān)閉。

在訓(xùn)練階段:

p=0.5def train_step(X):H1 = np.maximum(0, np.dot(W1,X)+b1)U1 = np.random.rand(H1.shape) <p//<p則保留H1 = H1*U1...

在預(yù)測階段:

def predict(X):H1 = np.maximum(0, np.dot(W1,X)+b1)*p....

在預(yù)測階段會乘以概率p,實際工程中,會在訓(xùn)練階段除以p。

p=0.5def train_step(X):H1 = np.maximum(0, np.dot(W1,X)+b1)U1 = (np.random.rand(H1.shape) <p)/pH1 = H1*U1...def predict(X):H1 = np.maximum(0, np.dot(W1,X)+b1)....

對dropout的理解方式一:不要記住太多的東西,學(xué)習(xí)過程中保持泛華能力。
對dropout的理解方式二:每次都關(guān)掉一部分感知器,得到一個新模型,最后做融合。不至于聽一家之言。

3典型結(jié)構(gòu)與訓(xùn)練調(diào)優(yōu)

典型CNN網(wǎng)絡(luò)有:Lenet、AlexNet、ZFNet、VGG、GoogleNet、ResNet。
調(diào)優(yōu):可以在這些典型的網(wǎng)絡(luò)模型基礎(chǔ)上訓(xùn)練自己的圖片分類模型。可以做的是:不要修改層的名稱,使用原有參數(shù),降低學(xué)習(xí)率;修改層的名稱,修改分類數(shù)為自己的分類數(shù)量,提高學(xué)習(xí)率;新增自己的層,提高學(xué)習(xí)率。

總結(jié)

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

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