圖像處理算法及其Python實踐 課件 第3章 深度學習基礎_第1頁
圖像處理算法及其Python實踐 課件 第3章 深度學習基礎_第2頁
圖像處理算法及其Python實踐 課件 第3章 深度學習基礎_第3頁
圖像處理算法及其Python實踐 課件 第3章 深度學習基礎_第4頁
圖像處理算法及其Python實踐 課件 第3章 深度學習基礎_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章深度學習基礎3.1深度學習簡介3.2神經網絡基礎3.3深度學習框架PyTorch3.4深度學習框架Keras3.5卷積神經網絡CNN3.1深度學習簡介

深度學習是一種機器學習的方法,和傳統的機器學習方法一樣,都可以根據輸入的數據進行分類或者回歸。但隨著數據量的增加,傳統的機器學習方法表現得不盡人意,而以神經網絡為基礎,利用更深的網絡層次來挖掘信息的方法—深度學習表現出了優異的性能。本章將介紹神經網絡的基礎原理,深度學習框架Pytorch和Keras中的一些基礎模塊以及如何利用這些模塊來搭建簡單的神經網絡。

相比于傳統的機器學習方法,深度學習方法是端到端的學習。在進行學習之前不需要人為地進行特征提取操作。可以通過深層的網絡結構自動從原始數據中提取有用的特質,不需要人工干預,從而增強了模型預測結果。3.1深度學習簡介近幾年比較流行的深度學習框架,如表3-1所示。其中TensorFlow和PyTorch是最受歡迎的兩個框架。在TensorFlow2發布之前,TensorFlow和PyTorch的主要區別在于它們的計算圖模式:TensorFlow使用靜態計算圖而PyTorch使用動態圖。TensorFlow的靜態計算圖在運行前需要編譯和優化,適合大規模生產環境;而PyTorch的動態圖則在運行時動態生成,更加靈活和直觀。TensorFlow2發布后,TensorFlow也引入了動態圖模式,從而支持靜態圖和動態圖兩種計算方式。使其在靈活性和性能直接實現了平衡。表3-1深度學習框架框架名稱開

者時

間Theano蒙特利爾大學2007年Caffe賈揚清2013年MXNet亞馬遜2014年Keras弗朗索瓦·肖萊2015年TensorFlowGoogle2015年CNTKMicrosoft2016年PyTorchFacebook2017年3.2.1全連接神經網絡結構具有n個輸入和一個輸出的單一神經元模型的結構如圖3-1所示。在這個模型中,神經元接收來自n個輸入的信號,經過帶權重的連接傳遞后,輸入信號通過激活函數(f)處理,最終生成神經元的輸出。此神經元模型用數學表達式表示如下:其中Xi表示輸入,Wi表示輸入權重,f()表示激活函數,y為神經元輸出。圖3-1神經元模型(3-1)3.2.1全連接神經網絡結構多個神經元組合形成神經網絡,如圖3-2其中最左邊的列為輸入層,最右邊為輸出層,中間為中間層(或隱藏層)。在圖3-2中的網絡只有中間層和輸出層有權重,因此這樣的網絡也稱為2層網絡。更復雜的神經網絡模型來說,可能會通過添加更多的中間層來構建3層、4層網絡等。圖3-2神經網絡模型3.2.1全連接神經網絡結構在神經網絡的模型中,一般來說,每個神經元都需要使用激活函數輸出信號。激活函數的作用在于決定如何來激活輸入信號的總和。下面介紹神經網絡使用的一些激活函數。神經網絡中經常使用的一個激活函數就是sigmoid函數,表達式為:還有一種比較常用的激活函數就是ReLU函數,表達式為:對于多元分類問題,在輸出層的激活函數我們常常使用softmax函數。其數學表達式為:該式子表示假設輸出層有n個神經元,計算第k個神經元的輸出,它表明輸出層的每個神經元受到所有輸入信號的影響。

圖3-3sigmoid函數

圖3-4ReLU函數(3-2)(3-3)(3-4)3.2.2前向傳播與反向傳播

下面具體介紹神經網絡的傳播過程。神經網絡由輸入數據得到預測的輸出數據的過程稱為向前傳播。一個3層神經網絡的向前傳播過程如圖3-5所示。其中第0層為輸入層,含有兩個神經元;第1層為一個隱藏層,含有3個神經元;第2層為另一個隱藏層,含有2個神經元;第3層為輸出層,含有2個神經元。圖3-53層神經網絡模型3.2.2前向傳播與反向傳播圖3-6神經網絡向前傳播圖中是一個3層神經網絡,在前向傳播時每一層的輸入通常會包含一個額外的“1”,這是為了引入網絡的偏置項。圖中每一層的輸入用a表示和輸出用z表示,每層的輸入a和輸出z之間都會使用激活函數h。激活函數h在第一層和第二層中使用sigmoid函數,在第3層使用恒等函數,可以等效為不加激活函數。3.2.2前向傳播與反向傳播神經網絡的學習過程通過優化損失函數來調整網絡參數,使其更好地擬合訓練數據。損失函數衡量的是網絡預測與實際目標之間的差距,常用的損失函數有均方誤差(MSE)和交叉熵(Cross-Entropy)。通過最小化損失函數,神經網絡能夠自動調整權重參數,以提高預測的準確性。1.均方誤差(MSE):預測數據與真實數據的差值的平方之和。數學表達式如下:

其中E表示網絡的預測輸出,yk表示神經網絡的輸出,tk表示監督數據,即真實數據,k表示數據的維數。2.交叉熵誤差(crossentropyerror)也經常被用作損失函數,交叉熵誤差數學表達式如下:其中,yk是神經網絡的輸出,tk是真實數據。為了使得yk和tk的數據長度一致,tk用one-hot表示,只有正確解對應的位置為1,其他位置為0。因此交叉熵誤差是由正確解對應位置的輸出結果決定的。(3-5)(3-6)3.2.2前向傳播與反向傳播前面我們引入了損失函數,機器學習的主要任務就是尋找最優參數,這里的最優參數就是指損失函數取得最小值的參數。而巧妙地使用梯度來尋找函數最小值的方法就是梯度法。梯度法是深度學習中常用的優化策略,特別在神經網絡的學習中經常用到。在梯度法中,函數的取值從當前位置沿著梯度的方向前進一段距離,然后在新的地方重新求梯度,再沿著新的梯度方向前進,如此反復,不斷地沿著梯度方向前進。像這種不斷地沿著梯度方向前進,逐漸減小函數值地過程就是梯度法。注意:梯度表示的是各點處的函數值減小最多的方向,無法保證梯度所指的方向就是函數最小值或者真正應該前進的方向。但是梯度的作用在于能夠最大限度地減小函數的值。3.2.2前向傳播與反向傳播通過數值微分的`numerical_gradient`函數可以計算神經網絡的梯度,但在參數較多時計算效率較低。為提高效率,通常使用反向傳播(Backpropagation),該方法通過鏈式法則和自動微分技術精確計算梯度,顯著減少計算時間。鏈式法則表明,復合函數的導數可以通過各組成函數的導數的乘積來表示。圖3-7是一個反向傳播的計算圖,計算圖從右向左傳播信號。反向傳播的計算順序是,先將節點的輸入信號乘以節點的局部導數,然后再傳遞給下一節點。圖3-7反向傳播計算圖3.2.2前向傳播與反向傳播下面我們來介紹加法節點和乘法節點的反向傳播。圖(a)為加法節點反向傳播,圖(b)為乘法節點反向傳播。圖3-8加法節點反向傳播圖3-9加乘法節點反向傳播我們把乘法節點的反向傳播稱為乘法層,加法節點的反向傳播稱為加法層。這里的“層”指的是神經網絡中功能的單位。3.2.3模型的整體實現通過梯度下降法,經過10000次迭代,模型在訓練集上達到較高的準確率(99.68%),但在測試集上有一定的性能下降(97.69%),可能存在過擬合現象。梯度下降法更新參數的網絡運行流程如下圖所示:圖3-10網絡流程3.3.1張量與自動微分PyTorch的核心是張量(Tensor),它是一個多維數組,表示各種數據類型。默認情況下,PyTorch創建的張量是FloatTensor類型,即32位浮點型,以下列表是常見的新建tensor的方法。表3-2新建tensor常用方法函

數功

能Tensor(*sizes)基礎構造函數ones(*sizes)全1tensorzeros(*sizes)全0tensoreye(*sizes)對角線為1,其他為0arange(s,e,step)從s到e,步長為steplinspace(s,e,steps)從s到e,均勻分為steps份rand/randn(*sizes)均勻/標準分布normal(mean,std)/uniform(from,to)正態分布/均勻分布3.3.1張量與自動微分在PyTorch中,Tensor有不同的數據類型,如表3-3所示。每種類型分別對應有CPU和GPU版本。同時各類型之間可以相互轉換,使用函數type(newtype)進行轉換是常用做法,同時還有float、long、half等快捷方法。Tensor還有一個type_as方法,其功能是調用當前Tensor對應類型的構造函數,生成一個與當前Tensor類型一致的Tensor。3.3.1張量與自動微分數據類型CPUtensorGPUtensor32bit浮點torch.FloatTensortorch.cuda.FloatTensor64bit浮點torch.DoubleTensortorch.cuda.DoubleTensor16bit半精度浮點N/Atorch.cuda.HalfTensor8bit無符號整型torch.ByteTensortorch.cuda.ByteTensor8bit有符號整型torch.CharTensortorch.cuda.CharTensor16bit有符號整型torch.ShortTensortorch.cuda.ShortTensor32bit有符號整型torch.IntTensortorch.cuda.IntTensor64bit有符號整型torch.LongTensortorch.cuda.LongTensor表3-3tensor數據類型3.3.1張量與自動微分調整Tensor的形狀可以使用view方法和rashape方法等。unsqueeze方法用于維度擴展,squeeze用于維度壓縮。注意的是,這些方法對某個Tensor進行改變時,會生成一個新的Tensor且原Tensor會保持不變,且新Tensor會與原Tensor內存空間共享。當一個Tensor中某個元素改變時,另一個也會改變。PyTorch中的逐元素操作對對Tensor中的每一個元素進行操作,此類操作的輸入和輸出形狀一致,常用的操作如表3-4所示。表3-4常用的逐元素操作函數功能abs/sqrt/div/exp/fmod/log/pow...絕對值/平方根/除法/指數/求余/對數/求冪cos/sin/asin/atan2/cosh三角函數ceil/round/floor/trunc上取整/四舍五入/下取整/只保留整數部分clamp(input,min,max)超過min/max部分截斷sigmoid/tanh...激活函數3.3.1張量與自動微分此外,PyTorch中的歸并操作會使輸出形狀小于輸入現狀,并且可以沿著某一維度進行指定操作。如加法sum,既可以計算整個Tensor的和,也可以計算Tensor中的每一行或者某一列的和。常用的歸并操作如表3-5所示。表3-5常用的歸并操作函

數功

能mean/sum/median/mode均值/和/中位數/眾數norm/dist范數/距離std/var標準/差方差cumsum/cumprod累加/累乘3.3.1張量與自動微分Tensor同時也支持與numpy.array中類似的索引操作,語法上也類似。注意,索引的結果與原Tensor共享內存,即修改一個。另一個也修改。目前PyTorch已經支持絕大對數numpy風格的高級索引操作,注意,高級索引操作一般不和原始的Tensor共享內存。計算圖是現代深度學習框架的核心,它為自動求導算法的反向傳播提供了理論支持。Pytorch在autograd模塊中實現了計算圖的功能,提供了實現任意標量值函數自動求導的類和函數,對一個張量只需要設置參數requires_grad=True,通過相關計算即可輸出其在輸出過程中的梯度信息。3.3.1張量與自動微分函數backward(tensors,

grad_tensors=None,

retain_graph=None,

create_graph=False)主要有下面幾個參數,如表3-6。表3-6backward的輸入參數參數名描述tensors需要被求導的tensor。grad_tensors雅可比向量積中的“向量”,如果需要求梯度的tensor不是一個標量,則需要指定grad_tensors,通常用torch.ones_like(tensor)指定。retain_graph反向傳播需要緩存一些中間結果,反向傳播之后,這些緩存就被清空,可設置為True不清除緩存,用來多次反向傳播。create_graph如果為True將構造計算圖,允許計算高階導數。3.3.1張量與自動微分在python程序中的向前傳播計算圖如圖3-11所示,其反向傳播計算圖如圖3-12所示。圖3-11向前傳播計算圖圖3-12向后傳播計算圖3.3.1張量與自動微分PyTorch中計算圖的特點可總結如下:(1)tensor是默認不求梯度的。如果某一節點被設置為requires_grad被設置為True,那么所有依賴它的節點requires_grad為True。(2)多次反向傳播時,梯度是累加的。即當retain_graph=True時,反向傳播的中間緩存不會被清空,且求得的梯度是累加上次的。(3)非葉子節點的梯度計算完之后即被清空,可以使用autograd.grad獲取非葉子節點的梯度。(4)葉子節點的grad_fn為空,即沒有反向傳播函數。當葉子節點的requires_grad被設置為False,也沒有梯度。(5)tensor的梯度與tensor本身的形狀是一致的。(6)不是標量時,調用backward函數時,需要設置grad_tensors。3.3.2PyTorch常用模塊在深度學習中,torch.nn模塊是為了簡化模型搭建而設計的,避免了底層的復雜性。其核心數據結構是Module,它是一個抽象概念,可以表示單個神經網絡層或包含多層的整個神經網絡。在構建神經網絡時,我們通常會繼承nn.Module來定義網絡結構。全連接層(例如,y=xw+b)的實現可以通過繼承nn.Module來定義。這樣,w和b成為網絡的可訓練參數,并且PyTorch會自動處理這些參數的更新。PyTorch中的nn模塊包含著許多已經建立好的網絡層,如表3-7所示,以后搭建網絡可直接調用即可。3.3.2PyTorch常用模塊

表3-7常用的網絡層類功能torch.nn.Linear全連接層torch.nn.Conv1d()1d卷積層torch.nn.Conv2d()2d卷積層torch.nn.Conv3d()3d卷積層torch.nn.MaxPool1d1d最大值池化層torch.nn.MaxPool2d2d最大值池化層torch.nn.MaxPool3d3d最大值池化層torch.nn.AvgPool1d1d平均值池化層torch.nn.AvgPool2d2d平均值池化層torch.nn.AvgPool3d3d平均值池化層torch.nn.RNN多層RNN單元torch.nn.LSTM多層長短期記憶單元LSTM3.3.2PyTorch常用模塊在PyTorch中,提供了幾十種激活函數層對應的類,但常用的激活函數層如表3-8所示。表3-8PyTorch中常用的激活函數類功能torch.nn.SigmoidSigmoid函數torch.nn.TanhTanh函數torch.nn.ReLUReLU函數torch.nn.SoftplusReLU函數的平滑近似3.3.2PyTorch常用模塊損失函數就是用來表示預測與實際數據之間的差距程度。神經網絡學習的目標就是將損失函數最小化。對于分類問題,就是分類正確的樣本越多越好;對于回歸問題,就是預測值與實際值誤差越小越好。011Torch.nn模塊提供了多種可直接使用的深度學習損失函數,如交叉熵,均方誤差等。常用的損失函數如表3-9所示。0223.3.2PyTorch常用模塊類功能適用類型torch.nn.L1Loss()平均絕對值誤差損失回歸torch.nn.MSELoss()均方誤差損失回歸torch.nn.CrossEntropyLoss()交叉熵損失多分類torch.nn.NLLLoss()負對數似然函數損失多分類torch.nn.NLLLoss2d()圖像負對數似然函數損失圖像分割torch.nn.KLDivLoss()KL散度損失回歸torch.nn.BCELoss()二分類交叉熵損失二分類torch.nn.MultiLabelMarginLoss()多標簽分類損失多標簽分類torch.nn.SmoothL1Loss()平滑的L1損失回歸torch.nn.SoftMarginLoss()多標簽二分類損失多標簽分類表3-9PyTorch中的常用的損失函數3.3.2PyTorch常用模塊在optim模塊,提供了很多可直接使用的深度學習優化算法,內置算法包括Adam,SGD,RMSprop等。可用的優化算法如表3-10所示。表3-10PyTorch中常用的優化器類功能torch.optim.SGD()隨機梯度下降算法torch.optim.Adam()Adam算法torch.optim.ASGD()平均隨機梯度下降算法torch.optim.Adadelta()Adadelta算法torch.optim.Adagrad()Adagrad算法torch.optim.Adamax()Adamax算法torch.optim.LBFGS()L-BFGS算法torch.optim.RMSprop()RMSprop算法torch.optim.Rprop()彈性反向傳播算法3.4深度學習框架KerasTensorflow2.x版本后與自己的Keras實現程序tf.keras捆綁在一起,它支持Tensorflow作為后端,這不僅實現了KerasAPI,還具有一些額外的Tensorflow功能。在安裝完Tensorflow2.x版本之后,只需要導入keras模塊就可以使用Keras高級深度學習API了。3.4.1Keras常用模塊Keras作為一個深度學習的API,提供了非常多的便捷接口。在Keras的layers模塊中提供了很多常用的層用于搭建神經網絡,如表3-11所示在搭建網絡時可直接調用。表3-11layers模塊中的常用層名

稱功

能layers.Concatenate連接層layers.Flatten輸入數據展平層layers.Dense全連接層layers.Activation激活函數層layers.Conv1D1D卷積層layers.Conv2D2D卷積層layers.Conv3D3D卷積層layers.MaxPooling1D1D最大值池化層layers.MaxPooling2D2D最大值池化層3.4.1Keras常用模塊layers.MaxPooling3D3D最大值池化層layers.AveragePooling1D1D平均值池化層layers.AveragePooling2D2D平均值池化層layers.AveragePooling3D3D平均值池化層layers.LSTM長短期記憶層layers.GRU門控循環單元layers.SimpleRNN全連接RNN層在Keras框架中經常使用的模塊有losses損失函數模塊、optimizers優化算法模塊等。losses損失函數模塊中常用的損失函數如下表3-12所示。Optimizers優化算法模塊中常用的優化策略如下表3-13所示。3.4.1Keras常用模塊任務類型損失函數功能描述分類BinaryCrossentropy二元分類任務中常用的交叉熵損失函數。分類CategoricalCrossentropy多類別分類任務中常用的交叉熵損失函數。分類SparseCategoricalCrossentropy與CategoricalCrossentropy類似,但用于標簽以整數形式表示的情況,通常用于多類別分類任務。分類Poisson適用于泊松分布相關的任務,如計數數據的預測。分類KLDivergence用于測量兩個概率分布之間的差異,通常在生成對抗網絡中用作生成器和判別器之間的損失函數。回歸MeanSquaredError均方誤差,用于回歸任務中,衡量預測值與真實值之間的平方差。3.4.1Keras常用模塊回歸MeanAbsoluteError平均絕對誤差,用于回歸任務中,衡量預測值與真實值之間的絕對差。回歸MeanAbsolutePercentageError平均絕對百分比誤差,是MeanAbsoluteError的一個變種,以百分比形式表示誤差。回歸MeanSquaredLogarithmicError均方對數誤差,對數變換后計算平方誤差,可用于處理數據具有指數增長趨勢的情況。回歸CosineSimilarity余弦相似度損失函數,衡量向量之間的余弦相似度,通常用于相似性度量的任務。表3-12losses模塊中常用的損失函數3.4.1Keras常用模塊表3-13optimizers模塊中常用的優化策略優化策略功能SGD隨機梯度下降RMSpropRMSprop算法AdamAdam算法AdadeltaAdadelta算法AdagradAdagrad算法NadamNadam算法FtrlFtrl算法3.4.2Keras搭建網絡模型Keras有兩種搭建網絡模型的方法:一種是使用順序API搭建網絡模型,另一種是使用函數API搭建網絡模型。1.使用順序API搭建網絡模型這里需要用到modules模塊Sequential類。下面我們來搭建一個三層的全連接神經網絡,第一個全連接層有20個神經元,使用ReLU激活函數來引入非線性特性;第二個全連接層有10個神經元,同樣使用ReLU激活函數。最一層輸出層有1個神經元,用于生成預測結果。使用summary方法打印網絡結構,并使用utils模塊中的plot_model函數生成模型流程圖并顯示出來。圖3-13順序API構建模型3.4.2Keras搭建網絡模型2.使用函數API創建神經網絡模型順序API非常易于使用,但是在構建具有更復雜拓撲結構或具有多個輸入和輸出的神經網絡結構時,順序API只能按照網絡順序一層一層的向下流通,這時我們需要使用函數API來搭建網絡模型。我們需要引入Keras中Module模塊。構建的模型如圖3-14所示。圖3-14函數API構建模型3.5.1卷積神經網絡結構卷積神經網絡也是一種神經網絡模型,它通常由多個卷積層(Convolution層)和池化層(Pooling層)組成,并且在多個卷積層和池化層之后往往會添加一些全連接層。圖3-15卷積神經網絡CNN基本結構CNNC基本結構由兩個卷積層和兩個池化層組成,并在卷積層和池化層之間加入激活函數,在網絡結構的末尾添加了兩個全連接層,最后輸出層的激活函數使用了Softmax函數,說明這是一個多分類的學習任務。一般來說,卷積層、池化層和全連接層的個數適學習任務而定。CNN以圖像識別為中心,并在多個機器學習領域獲得了廣泛的應用,比如目標檢測、圖像分割、文本分類等。CNN相比于全連接神經網絡的優點在于,它沒有忽略掉圖像數據的形狀,而全連接神經網絡會將數據展平再進行后續操作。對于圖像數據來說,它往往是一組三維數據,數據的形狀中含有重要的空間信息,比如空間上鄰近的像素為相似的值,RGB各個通道之間有著一定的關聯性等。3.5.2卷積與池化在CNN中,卷積層執行的基本操作是卷積運算,通過卷積核在輸入數據上滑動來計算特征圖。卷積層的兩個關鍵參數是步長(stride)和填充(padding),它們對輸出特征圖的尺寸有顯著影響。步長是卷積核在輸入數據上移動的步長,默認情況下為1,意味著卷積核每次移動一個像素。步長設置得越大,卷積后特征圖的尺寸會越小。例如,步長為2會使特征圖的尺寸減少一半。填充則是在輸入數據的邊緣添加額外的像素(通常是0),其作用是調整輸出特征圖的尺寸,并保留邊緣信息。填充越多,輸出特征圖的尺寸也越大,從而可以覆蓋輸入數據的邊緣區域。如果沒有填充,卷積操作會減少特征圖的尺寸。通過適當調整步長和填充,能夠靈活地控制卷積層的輸出特征圖的大小,進而影響網絡的性能和計算復雜度。在圖3-16中,設置步長為1填充為0,即卷積核向右向下移動的幅度為1,最終輸出的特征圖尺寸為。如下圖3-17所示我們可以對輸入數據進行填充操作,使用了幅度為1的0填充。填充的幅度越大,輸出數據的形狀就越大,最終輸出的特征圖尺寸為。3.5.2卷積與池化圖3-16卷積運算圖3-17幅度為1的0填充3.5.2卷積與池化整個卷積層的數據處理流如圖3-18所示。輸入數據的形狀為(N,C,H,W),其中N是批處理中的樣本數量,C是每個樣本的通道數(如RGB圖像有3個通道),高為H,寬為W。因為在實際的學習任務時,我們通常使用批處理來學習輸入數據。有時候我們也會使用多個卷積核來進行卷積運算,這里的(FN,C,FH,FW)指的是有FN個卷積核,每個卷積核通道數為C(卷積核的通道數必須與輸入數據的通道數一致),高為FH,寬為FW。加以偏置后,最后輸出數據形狀為(N,FN,OH,OW)。圖3-18卷積層的數據處理流3.5.2卷積與池化池化層所要進行的操作為縮小數據的

寬W與高H,它并不改變數據的通道數以及維度。圖3-192×2步幅為2的最大值池化如圖3-19所示,這是一個池化層所采取的最大值池化操作。在2×2的區域中選取最大值,并以步幅為2向后移動。除了最大值池化外,還有均值池化等。一般來說,池化區域為n×n,步幅也通常采取n。CNN中的池化層一方面沒有需要學習的參數,另一方面它不會改變數據的維度,只改變單個特征數據圖上的寬與高。3.5.3卷積神經網絡模型隨著深度學習和計算機視覺的迅速發展,許多基于卷積神經網絡CNN的網絡模型不斷地被提出。為了完成大量的數據學習任務和實現更高的學習效率,卷積神經網絡不斷地走向更深的層次。下面介紹幾種經典的卷積神經網絡模型。1.LeNet-5網絡LeNet-5網絡是在1998提出的一類卷積神經網絡,其處理的任務主要為手寫數字識別。

圖3-20LeNet-5網絡模型3.5.3卷積神經網絡模型如圖3-20所示,在LeNet-5網絡模型中,輸入的圖像數據大小為32像素×32像素,經過兩個卷積層、兩個池化層和兩個全連接層產生一個含有10個神經元的輸出層,用于10分類任務。其中第一層C1層是一個卷積層,由6個5×5的卷積核構成,共有156個可訓練參數。S2層是一個下采樣池化層,使用2×2的池化核,步幅為2,將6個28×28的特征映射轉化為6個14×14的特征映射。C3層是一個由16個5×5卷積核組成的卷積層,將16個14×14的特征映射轉化為16個10×10的特征映射。S4與S2同樣為下采樣層,將16個10×10的特征映射轉化為16個5×5的特征映射。C5層與F6層為全連接層,分別有120個和84個神經元。最后輸出層含有10個神經元,用于手寫數字識別。3.5.3卷積神經網絡模型2.AlexNet網絡AlexNet網絡結構在提出之時是在兩個GPU上進行訓練的,所以其原始結構中包含兩塊GPU通信設計,如下圖所示。圖3-21AlexNet網絡結構3.5.3卷積神經網絡模型該網絡前五個是卷積層,后三個是完全連接層。最后一個全連接層含有1000個神經元,并使用softmax函數在1000個類別標簽上產生分布。并且在第一、二卷積層之后加入響應正規化層,在每個響應正規化層和第五個卷積層之后加入ReLU激活函數。第三、第四和第

溫馨提示

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

評論

0/150

提交評論