第3章 3.1 卷積神經(jīng)網(wǎng)絡(luò)_第1頁(yè)
第3章 3.1 卷積神經(jīng)網(wǎng)絡(luò)_第2頁(yè)
第3章 3.1 卷積神經(jīng)網(wǎng)絡(luò)_第3頁(yè)
第3章 3.1 卷積神經(jīng)網(wǎng)絡(luò)_第4頁(yè)
第3章 3.1 卷積神經(jīng)網(wǎng)絡(luò)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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)介

卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)是一類包含卷積計(jì)算且具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的代表算法之一。卷積神經(jīng)網(wǎng)絡(luò)采取的權(quán)重共享理念降低了訓(xùn)練過(guò)程的復(fù)雜程度,分層局部連接的結(jié)構(gòu)使其適合處理圖像分類等任務(wù)。楊立昆等人提出了一個(gè)目前使用得最為廣泛的CNN,它的網(wǎng)絡(luò)結(jié)構(gòu)由卷積層和下采樣層交替構(gòu)成,并用誤差梯度的方式進(jìn)行訓(xùn)練。具有高維像素的圖像可以直接輸入CNN,降低了特征提取和分類過(guò)程中數(shù)據(jù)重建的復(fù)雜度。CNN有諸多變體網(wǎng)絡(luò),均在大規(guī)模圖像分類方面取得了優(yōu)異的成績(jī),例如AlexNet、VGGNet、GoogLeNet和ResNet等。除了圖像分類,CNN還在很多其他研究領(lǐng)域取得了巨大的成功,如語(yǔ)音識(shí)別、圖像分割、自然語(yǔ)言處理等。卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)一個(gè)經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5主要有2個(gè)卷積層、2個(gè)下采樣層(池化層)、3個(gè)全連接層,LeNet-5的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。1基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別實(shí)例目錄卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層2常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)3卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層從圖中還可以看到,如果把原始圖片和卷積結(jié)果的每個(gè)像素點(diǎn)看成一個(gè)神經(jīng)元,并且把原始圖片和卷積結(jié)果看成前饋神經(jīng)網(wǎng)絡(luò)中兩個(gè)相連的層,那么得到的卷積結(jié)果的每個(gè)神經(jīng)元所用的連接權(quán)重都是相同的卷積核中的9個(gè)數(shù),即每個(gè)輸出神經(jīng)元的權(quán)重是共享的,這比全連接網(wǎng)絡(luò)中的權(quán)重?cái)?shù)量少了很多。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Conv2DConv2D(二維卷積)類將創(chuàng)建一個(gè)卷積核,該卷積核對(duì)層輸入進(jìn)行卷積,以生成輸出張量。語(yǔ)法格式如下。keras.layers.Conv2D(filters,kernel_size,strides=(1,1),padding="valid",data_format=None,dilation_rate=(1,1),groups=1,activation=None,use_bias=True,kernel_initializer="glorot_uniform",bias_initializer="zeros",kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None,**kwargs)參數(shù)名稱說(shuō)明filters接收整數(shù),表示輸出數(shù)據(jù)的通道數(shù)量(卷積中濾波器的數(shù)量),無(wú)默認(rèn)值kernel_size接收1個(gè)整數(shù)或者用2個(gè)整數(shù)表示的元組或列表,指明2D卷積核的寬度和高度。可以是1個(gè)整數(shù),為所有空間維度指定相同的值,無(wú)默認(rèn)值strides接收1個(gè)整數(shù)或者用2個(gè)整數(shù)表示的元組或列表,指明卷積沿寬度和高度方向的步長(zhǎng)??梢允?個(gè)整數(shù),為所有空間維度指定相同的值。若strides=2,則輸出形狀的寬度和高度都將會(huì)減半。參數(shù)strides和參數(shù)dilation_rate必須至少有一個(gè)為(1,1)。默認(rèn)為(1,1)padding接收"valid"或"same"(大小寫(xiě)敏感)。Valid表示不進(jìn)行邊界延拓,會(huì)導(dǎo)致卷積后的通道尺寸變小。Same表示進(jìn)行邊界延拓,使得卷積后的通道尺寸不變。默認(rèn)為"valid"常用參數(shù)及其說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層參數(shù)名稱說(shuō)明data_format接收字符串,取值為"channels_last"或"channels_first",表示輸入中維度的順序。"channels_last"對(duì)應(yīng)輸入尺寸為(batch_size,height,width,channels),"channels_first"對(duì)應(yīng)輸入尺寸為(batch_size,channels,height,width)。默認(rèn)情況下為從Keras配置文件~/.keras/keras.json中找到的image_data_format值。如果未設(shè)置該參數(shù),將使用"channels_last"。默認(rèn)為Nonedilation_rate接收1個(gè)整數(shù)或用2個(gè)整數(shù)表示的元組或列表,指定擴(kuò)張(空洞)卷積的膨脹率。可以是1個(gè)整數(shù),為所有空間維度指定相同的值。一個(gè)膨脹率為2的3×3卷積核,其感受野與5×5的卷積核相同,而且僅需要9個(gè)參數(shù)。默認(rèn)為(1,1)常用參數(shù)及其說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層參數(shù)名稱說(shuō)明activation接收要使用的激活函數(shù)(詳見(jiàn)activations)。如果不指定,則不使用激活函數(shù)(即線性激活)。默認(rèn)為Noneuse_bias接收布爾值,表示該層是否使用偏置向量。默認(rèn)為True常用參數(shù)及其說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層如果use_bias為True,則會(huì)創(chuàng)建一個(gè)偏置向量并將其添加到輸出中。如果activation不是None,它也會(huì)應(yīng)用于輸出。當(dāng)使用二維卷積層作為網(wǎng)絡(luò)第一層時(shí),需要給網(wǎng)絡(luò)提供input_shape參數(shù)。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層若將膨脹率參數(shù)dilation_rate設(shè)置為2,則卷積核的尺寸將擴(kuò)大一倍,然后按照普通卷積的過(guò)程對(duì)圖像進(jìn)行卷積。一個(gè)膨脹率為2的3×3卷積核如下圖所示,其感受野與5×5的卷積核相同,而且僅需要9個(gè)參數(shù)。實(shí)際計(jì)算時(shí)沒(méi)有必要對(duì)卷積核填充為0的地方和圖像相應(yīng)的像素點(diǎn)計(jì)算內(nèi)積。在相同的計(jì)算條件下,空洞卷積提供了更大的感受野??斩淳矸e經(jīng)常用在實(shí)時(shí)圖像分割中。當(dāng)網(wǎng)絡(luò)層需要較大的感受野,而計(jì)算資源有限且無(wú)法提高卷積核數(shù)量或大小時(shí),可以考慮空洞卷積。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層SeparableConv2D深度方向的SeparableConv2D(可分離二維卷積)的操作包括兩個(gè)部分。首先執(zhí)行深度方向的空間卷積(分別作用于每個(gè)輸入通道),如下圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層然后將所得輸出通道混合在一起進(jìn)行逐點(diǎn)卷積,如下圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層SeparableConv2D的計(jì)算過(guò)程如下圖所示。假設(shè)輸入層的數(shù)據(jù)的大小是7×7×3(高×寬×通道)在SeparableConv2D的第一步中,不將Conv2D中3個(gè)3×3的卷積算子作為一個(gè)卷積核,而是分開(kāi)使用3個(gè)卷積算子,每個(gè)卷積算子的大小為3×3;一個(gè)大小為3×3的卷積算子與輸入層的一個(gè)通道(僅一個(gè)通道,而非所有通道)做卷積運(yùn)算,得到1個(gè)大小為5×5的映射圖;然后將這些映射圖堆疊在一起,得到一個(gè)5×5×3的中間數(shù)據(jù)。第一步的計(jì)算過(guò)程如上圖從左往右方向的前3幅圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層SeparableConv2D的計(jì)算過(guò)程如下圖所示。假設(shè)輸入層的數(shù)據(jù)的大小是7×7×3(高×寬×通道)在SeparableConv2D的第二步中,為了擴(kuò)展深度,用1個(gè)大小為1×1的卷積核,每個(gè)卷積核有3個(gè)1×1的卷積算子,對(duì)5×5×3的中間數(shù)據(jù)進(jìn)行卷積,可得到1個(gè)大小為5×5的輸出通道。用128個(gè)1×1的卷積核,則可以得到128個(gè)輸出通道。第二步的計(jì)算過(guò)程如上圖的右半部分的2幅圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層SeparableConv2D會(huì)顯著降低Conv2D中參數(shù)的數(shù)量。對(duì)于深度較淺的網(wǎng)絡(luò)而言,如只有一到兩個(gè)卷積層時(shí),如果用SeparableConv2D替代Conv2D,網(wǎng)絡(luò)的能力可能會(huì)顯著下降,得到的網(wǎng)絡(luò)可能是次優(yōu)的。但是,如果運(yùn)用得當(dāng),SeparableConv2D能在不降低網(wǎng)絡(luò)性能的前提下實(shí)現(xiàn)效率提升??煞蛛x的卷積可以理解為將卷積核分解成兩個(gè)較小的卷積核。在Keras中,SeparableConv2D類的語(yǔ)法格式如下。keras.layers.SeparableConv2D(filters,kernel_size,strides=(1,1),padding='valid',data_format=None,dilation_rate=(1,1),depth_multiplier=1,activation=None,use_bias=True,depthwise_initializer='glorot_uniform',pointwise_initializer='glorot_uniform',bias_initializer='zeros',depthwise_regularizer=None,pointwise_regularizer=None,bias_regularizer=None,activity_regularizer=None,depthwise_constraint=None,pointwise_constraint=None,bias_constraint=None)SeparableConv2D類的常用參數(shù)及其說(shuō)明類似Conv2D類。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層DepthwiseConv2DDepthwiseConv2D(深度可分離二維卷積)的第一步是執(zhí)行深度方向的空間卷積(其分別作用于每個(gè)輸入通道),如下圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層DepthwiseConv2D類的語(yǔ)法格式如下。keras.layers.SeparableConv2D(filters,kernel_size,strides=(1,1),padding='valid',data_format=None,dilation_rate=(1,1),depth_multiplier=1,activation=None,use_bias=True,depthwise_initializer='glorot_uniform',pointwise_initializer='glorot_uniform',bias_initializer='zeros',depthwise_regularizer=None,pointwise_regularizer=None,bias_regularizer=None,activity_regularizer=None,depthwise_constraint=None,pointwise_constraint=None,bias_constraint=None)depth_multiplier參數(shù)用于控制深度卷積步驟中每個(gè)輸入通道生成多少個(gè)輸出通道。DepthwiseConv2D的參數(shù)類似SeparableConv2D,只是少了filters參數(shù),因?yàn)檩敵鐾ǖ赖臄?shù)量等于輸入通道的數(shù)量乘depth_multiplier值。DepthwiseConv2D類的常用參數(shù)及其說(shuō)明類似Conv2D類。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Conv2DTransposeConv2DTranspose(轉(zhuǎn)置二維卷積)常常用于CNN中對(duì)特征圖進(jìn)行上采樣。Conv2DTranspose對(duì)普通卷積操作中的卷積核做轉(zhuǎn)置處理,將普通卷積的輸出作為轉(zhuǎn)置卷積的輸入,而將轉(zhuǎn)置卷積的輸出作為普通卷積的輸入。普通卷積的計(jì)算過(guò)程如下圖所示。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Conv2DTranspose的計(jì)算過(guò)程如下圖示。

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Conv2DTranspose類的語(yǔ)法格式如下。keras.layers.Conv2DTranspose(filters,kernel_size,strides=(1,1),padding='valid',output_padding=None,data_format=None,dilation_rate=(1,1),activation=None,use_bias=True,kernel_initializer='glorot_uniform',bias_initializer='zeros',kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None)Conv2DTranspose類中的output_padding參數(shù)用于接收1個(gè)整數(shù)或用2個(gè)整數(shù)表示的元組或列表,以指定沿輸出張量的高度和寬度的填充量。沿給定維度的輸出填充量必須低于沿同一維度的步長(zhǎng)。如果該參數(shù)接收的值為“None”(默認(rèn)),那么輸出尺寸將自動(dòng)推理出來(lái)。Conv2DTranspose類的常用參數(shù)及其說(shuō)明類似Conv2D類。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Conv3DConv3D(三維卷積)的計(jì)算過(guò)程如右圖所示。左上方部分只有一個(gè)輸入通道、一個(gè)輸出通道、一個(gè)三維的卷積算子(3×3×3)。如果有64個(gè)輸入通道(每個(gè)通道輸入一個(gè)三維的數(shù)據(jù)),要得到32個(gè)輸出通道(每個(gè)通道也輸出一個(gè)三維的數(shù)據(jù)),則需要32個(gè)卷積核,每個(gè)卷積核有64個(gè)3×3×3的卷積算子。Conv3D中可訓(xùn)練的參數(shù)的數(shù)量通常遠(yuǎn)遠(yuǎn)多于普通的Conv2D。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層需要注意,Conv3D的輸入要求是一個(gè)五維的張量,即[批大小,長(zhǎng)度,寬度,高度,通道數(shù)],而Conv2D的輸入要求是一個(gè)四維的張量,即[批大小,寬度,高度,通道數(shù)]。如果Conv3D和Conv2D混合使用,則要用Reshape層調(diào)整相應(yīng)的輸入數(shù)據(jù)的大小(調(diào)整數(shù)據(jù)大小時(shí)忽略第一維的批大?。?。在Keras中的,Conv3D的語(yǔ)法格式如下,其參數(shù)和二維卷積基本一致,只是輸入和輸出多了一維。keras.layers.Conv3D(filters,kernel_size,strides=(1,1,1),padding="valid",data_format=None,dilation_rate=(1,1,1),groups=1,activation=None,use_bias=True,kernel_initializer="glorot_uniform",bias_initializer="zeros",kernel_regularizer=None,bias_regularizer=None,activity_regularizer=None,kernel_constraint=None,bias_constraint=None,**kwargs)卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層2.池化層在卷積層中,可以通過(guò)調(diào)節(jié)步長(zhǎng)參數(shù)來(lái)達(dá)到減小輸出尺寸的目的。池化層同樣基于局部相關(guān)性的思想,在局部相關(guān)的一組元素中進(jìn)行采樣或信息聚合,從而得到新的元素值。如最大池化(MaxPooling)層返回局部相關(guān)元素集中最大的元素值,平均池化(AveragePooling)層返回局部相關(guān)元素集中元素的平均值。池化即下采樣(Downsample),目的是減少特征圖的尺寸。池化操作對(duì)于每個(gè)卷積后的特征圖都是獨(dú)立進(jìn)行的,池化窗口規(guī)模一般為2×2。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層相對(duì)于卷積層進(jìn)行的卷積運(yùn)算,池化層進(jìn)行的運(yùn)算一般有以下幾種。(1)最大池化。取4個(gè)元素的最大值。這是最常用的池化方法。(2)平均值池化。取4個(gè)元素的平均值。(3)高斯池化。借鑒高斯模糊的方法。不常用。如果池化層的輸入單元大小不是2的整數(shù)倍,則一般采取邊緣補(bǔ)零(ZeroPadding)的方式補(bǔ)成2的整數(shù)倍,再池化。MaxPooling2D(二維最大池化)的計(jì)算過(guò)程如下圖所示,其中池化窗口大小為(2,2),步長(zhǎng)大小為(2,2),由一個(gè)大小為4×4的通道池化得到一個(gè)大小為2×2的通道。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層MaxPooling2D類的語(yǔ)法格式如下keras.layers.MaxPooling2D(pool_size=(2,2),strides=None,padding="valid",data_format=None,**kwargs)常用參數(shù)及其說(shuō)明表參數(shù)名稱說(shuō)明pool_size接收一個(gè)整數(shù)或者用同一個(gè)整數(shù)表示的元組或列表,表示池化窗口的大小。默認(rèn)為(2,2),即每2×2個(gè)像素中取一個(gè)最大值strides接收1個(gè)整數(shù)或者用2個(gè)整數(shù)表示的元組或列表,指明卷積沿寬度和高度方向的步長(zhǎng)??梢允?個(gè)整數(shù),為所有空間維度指定相同的值。默認(rèn)為None,即strides=pool_sizepadding接收"valid"或"same"(大小寫(xiě)敏感)。valid表示不進(jìn)行邊界延拓,會(huì)導(dǎo)致卷積后的通道尺寸變小。same表示進(jìn)行邊界延拓,使得卷積后的通道尺寸不變。默認(rèn)為"valid"卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層3.歸一化層對(duì)于淺層網(wǎng)絡(luò)來(lái)說(shuō),隨著網(wǎng)絡(luò)訓(xùn)練的進(jìn)行,當(dāng)每層中參數(shù)更新時(shí),靠近輸出層的輸出較難出現(xiàn)劇烈變化。但對(duì)深度神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),即使輸入數(shù)據(jù)已做標(biāo)準(zhǔn)化,訓(xùn)練中網(wǎng)絡(luò)參數(shù)的更新依然很容易造成網(wǎng)絡(luò)輸出值的劇烈變化。這種計(jì)算數(shù)值的不穩(wěn)定性會(huì)導(dǎo)致操作者難以訓(xùn)練出有效的深度網(wǎng)絡(luò)。歸一化層利用小批上的平均值核標(biāo)準(zhǔn)差,不斷調(diào)整網(wǎng)絡(luò)的中間輸出,從而使整個(gè)網(wǎng)絡(luò)在各層的中間輸出的數(shù)值更穩(wěn)定,提高訓(xùn)練網(wǎng)絡(luò)的有效性。歸一化層目前主要有5種,批歸一化(BatchNormalization,BN)層層歸一化(LayerNormalization,LN)層實(shí)例歸一化(InstanceNormalization,IN)層組歸一化(GroupNormalization,GN)層可切換歸一化(SwitchableNormalization,SN)層卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層批歸一化層的特性如下。(1)批歸一化層的計(jì)算方式是將每個(gè)通道的N、H、W單獨(dú)拿出來(lái)進(jìn)行歸一化處理。(2)N越小,批歸一化層的表現(xiàn)越不好,因?yàn)橛?jì)算過(guò)程中所得到的平均值和方差不能代表全局。層歸一化層的特性如下。(1)層歸一化層的計(jì)算方式是將C、H、W單獨(dú)拿出來(lái)進(jìn)行歸一化處理,不受N的影響。(2)常用在RNN中,但是如果輸入的特征區(qū)別很大,則不建議使用層歸一化層做歸一化處理。實(shí)例歸一化層的特性如下。(1)實(shí)例歸一化層的計(jì)算方式是將H、W單獨(dú)拿出來(lái)進(jìn)行歸一化處理,不受C和N的影響。(2)常用在風(fēng)格化遷移中,但是如果特征圖可以用到通道之間的相關(guān)性,則不建議使用實(shí)例歸一化層做歸一化處理。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層組歸一化層的特性如下。(1)組歸一化層的計(jì)算過(guò)程:首先將C分成G組,然后將C、H、W單獨(dú)取出進(jìn)行歸一化處理,最后將G組歸一化之后的數(shù)據(jù)合并。(2)組歸一化層介于層歸一化層和實(shí)例歸一化層之間,例如,G的大小可以為1或者為C??汕袚Q歸一化層的特性如下。(1)將批歸一化層、層歸一化層和實(shí)例歸一化層結(jié)合,分別為它們賦予權(quán)重,讓網(wǎng)絡(luò)自己去學(xué)習(xí)歸一化層應(yīng)該使用什么方法。(2)因?yàn)榻Y(jié)合了多個(gè)歸一化層,所以訓(xùn)練方式復(fù)雜。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層深度學(xué)習(xí)中最常用的歸一化層是批歸一化層。批歸一化層應(yīng)用了一種變換,該變換可將該批所有樣本在每個(gè)特征上的平均值保持在0左右,將標(biāo)準(zhǔn)偏差保持在1左右。把可能逐漸向非線性傳遞函數(shù)(如Sigmoid函數(shù))取值的極限飽和區(qū)靠攏的分布,強(qiáng)制拉回到平均值為0、方差為1的標(biāo)準(zhǔn)正態(tài)分布,使得規(guī)范化后的輸出落入對(duì)下一層的神經(jīng)元較為敏感的區(qū)域,以此避免梯度消失問(wèn)題。因?yàn)樘荻纫恢倍寄鼙3直容^大的狀態(tài),所以神經(jīng)網(wǎng)絡(luò)參數(shù)的調(diào)整效率比較高,即向損失函數(shù)最優(yōu)值“邁動(dòng)的步子”大,加快收斂速度。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

keras.layers.BatchNormalization(axis=-1,momentum=0.99,epsilon=0.001,center=True,scale=True,beta_initializer="zeros",gamma_initializer="ones",moving_mean_initializer="zeros",moving_variance_initializer="ones",beta_regularizer=None,gamma_regularizer=None,beta_constraint=None,gamma_constraint=None,renorm=False,renorm_clipping=None,renorm_momentum=0.99,fused=None,trainable=True,virtual_batch_size=None,adjustment=None,name=None,**kwargs)參數(shù)名稱說(shuō)明axis接收整數(shù),表示要規(guī)范化的軸,通常為特征軸。例如在進(jìn)行data_format="channels_first"的二維卷積后,一般會(huì)設(shè)axis=1。默認(rèn)為-1momentum接收浮點(diǎn)數(shù),表示動(dòng)態(tài)平均值的動(dòng)量。默認(rèn)為0.99epsilon接收大于0的小浮點(diǎn)數(shù),用于防止出現(xiàn)除0錯(cuò)誤。默認(rèn)為0.001center接收布爾值,若設(shè)為True,將會(huì)將beta作為偏置加上去,否則忽略參數(shù)beta。默認(rèn)為Truescale接收布爾值,若設(shè)為True,則會(huì)乘gamma,否則不使用gamma。當(dāng)下一層是線性的時(shí),可以設(shè)為False,因?yàn)榭s放的操作將被下一層執(zhí)行。默認(rèn)為True常用參數(shù)及其說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層4.正則化層在深度神經(jīng)網(wǎng)絡(luò)中,如果網(wǎng)絡(luò)的參數(shù)較多,而訓(xùn)練樣本較少,則訓(xùn)練出來(lái)的網(wǎng)絡(luò)可能產(chǎn)生過(guò)擬合的現(xiàn)象。過(guò)擬合的具體表現(xiàn)為,網(wǎng)絡(luò)在訓(xùn)練集上的表現(xiàn)好,預(yù)測(cè)準(zhǔn)確率較高;但是在測(cè)試集的表現(xiàn)不好,預(yù)測(cè)準(zhǔn)確率較低。但對(duì)深度神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),即使輸入數(shù)據(jù)已做標(biāo)準(zhǔn)化,訓(xùn)練中網(wǎng)絡(luò)參數(shù)的更新依然很容易造成網(wǎng)絡(luò)輸出值的劇烈變化。這種計(jì)算數(shù)值的不穩(wěn)定性會(huì)導(dǎo)致操作者難以訓(xùn)練出有效的深度網(wǎng)絡(luò)。Dense層正則化的英文為regularizaiton,直譯為規(guī)則化。設(shè)置正則化的目的是防止網(wǎng)絡(luò)過(guò)擬合,進(jìn)而增強(qiáng)網(wǎng)絡(luò)的泛化能力。最終目的是讓泛化誤差(GeneralizationError)的值無(wú)限接近于甚至等于測(cè)試誤差(TestError)的值。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層對(duì)過(guò)擬合曲線與正則化后的曲線的模擬,如下圖所示。其中上下劇烈波動(dòng)的這條曲線為過(guò)擬合曲線。而平滑的曲線則是正則化后的曲線,正則化給訓(xùn)練的目標(biāo)函數(shù)加上一些規(guī)則,限制其曲線變化的幅度。Dense類用于實(shí)現(xiàn)Dense層,從而構(gòu)造正則化層,其語(yǔ)法格式詳見(jiàn)第2章2.3.2小節(jié)對(duì)Dense類目介紹。Dense類的參數(shù)kernel_regularizer表示應(yīng)用于權(quán)重矩陣的正則化函數(shù),bias_regularizer表示應(yīng)用于偏置向量的正則化函數(shù),activity_regularizer表示應(yīng)用于圖層的輸出的正則化函數(shù)。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層

卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層Dropout層Dropout是正則化技術(shù)之一,用于在網(wǎng)絡(luò)中對(duì)抗過(guò)擬合。Dropout有效的原因是Dropout層能夠使網(wǎng)絡(luò)避免在訓(xùn)練數(shù)據(jù)上產(chǎn)生復(fù)雜的相互適應(yīng)。Dropout這個(gè)術(shù)語(yǔ)代指在神經(jīng)網(wǎng)絡(luò)中丟棄部分神經(jīng)元(包括隱藏神經(jīng)元和可見(jiàn)神經(jīng)元)。在訓(xùn)練階段,Dropout使得每次訓(xùn)練只有部分網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)得到更新,因而是一種高效的神經(jīng)網(wǎng)絡(luò)模型平均化的方法。卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層前向傳播時(shí),讓某個(gè)神經(jīng)元的激活值以一定的概率停止工作,可以使網(wǎng)絡(luò)泛化性更強(qiáng),因?yàn)樯窠?jīng)元不會(huì)太依賴某些局部的特征。隨機(jī)(臨時(shí))刪除網(wǎng)絡(luò)中一些隱藏層的神經(jīng)元,得到修改后的網(wǎng)絡(luò)。然后使一小批輸入數(shù)據(jù)前向傳播,再把得到的損失通過(guò)修改后的網(wǎng)絡(luò)反向傳播,按照SGD更新對(duì)應(yīng)的參數(shù)(只更新沒(méi)有被刪除的神經(jīng)元的權(quán)重)。最后恢復(fù)被刪除的神經(jīng)元,重復(fù)此過(guò)程。Dropout層的工作示意如下圖所示。參數(shù)名稱說(shuō)明rate接收在0和1之間的浮點(diǎn)數(shù),表示需要丟棄的輸入比例。無(wú)默認(rèn)值noise_shape接收整數(shù)張量,表示將與輸入相乘的二進(jìn)制Dropout層的形狀。例如,如果輸入尺寸為(batch_size,timesteps,features),然后希望Dropout層在所有時(shí)間步都是一樣的,則可以使用noise_shape=(batch_size,1,features)。默認(rèn)為Noneseed接收整數(shù),表示隨機(jī)種子。默認(rèn)為None常用參數(shù)及其說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層tf.keras.layers.Dropout(rate,noise_shape=None,seed=None,***kwargs)在Keras中,Dropout類的語(yǔ)法格式如下。1基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別實(shí)例目錄卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層2常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)3基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別實(shí)例基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別實(shí)例部分代碼#構(gòu)造網(wǎng)絡(luò)fromkerasimportSequential,layers,optimizersmodel=Sequential([

#二維卷積操作的輸入數(shù)據(jù)要求:[樣本數(shù),寬度,高度,通道數(shù)]

layers.Reshape((28,28,1),input_shape=(28,28)),

#3×3的卷積核,輸出32個(gè)通道

layers.Conv2D(32,kernel_size=(3,3),activation='relu'),

#取2×2網(wǎng)格的最大值進(jìn)行池化

layers.MaxPooling2D(pool_size=(2,2)),

layers.Conv2D(64,kernel_size=(3,3),activation='relu'),

layers.MaxPooling2D(pool_size=(2,2)),

layers.Conv2D(64,kernel_size=(3,3),activation='relu'),左邊代碼中,在conv2d_1中進(jìn)行卷積并在max_pooling2d_1中進(jìn)行池化后,得到32個(gè)通道的大小為(13,13)的數(shù)據(jù),經(jīng)過(guò)一個(gè)卷積核大小為3×3的卷積層conv2d_2,輸出64個(gè)通道,這個(gè)卷積層有(32×3×3+1)×64=18496個(gè)可訓(xùn)練的參數(shù)。需要注意,Conv2D用不同的卷積參數(shù)對(duì)不同的輸入通道進(jìn)行卷積,然后加上一個(gè)常數(shù)項(xiàng),最后得到一個(gè)輸出通道。整個(gè)網(wǎng)絡(luò)一共有93322個(gè)可訓(xùn)練的參數(shù)。1基于卷積神經(jīng)網(wǎng)絡(luò)的手寫(xiě)數(shù)字識(shí)別實(shí)例目錄卷積神經(jīng)網(wǎng)絡(luò)中的常用網(wǎng)絡(luò)層2常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)3常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)1.LeNet-5LeNet-5是楊立昆在1998年設(shè)計(jì)的用于手寫(xiě)數(shù)字識(shí)別的卷積神經(jīng)網(wǎng)絡(luò),它是早期卷積神經(jīng)網(wǎng)絡(luò)中最有代表性的網(wǎng)絡(luò)結(jié)構(gòu)之一。LeNet-5共有7層(不包括輸入層),每層都包含不同數(shù)量的訓(xùn)練參數(shù),如下圖所示。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)LeNet-5中主要有2個(gè)卷積層、2個(gè)池化層和3個(gè)全連接層。具體的Keras實(shí)現(xiàn)可參考代碼3-9。由于當(dāng)時(shí)缺乏大規(guī)模訓(xùn)練數(shù)據(jù),計(jì)算機(jī)的計(jì)算能力也跟不上,LeNet-5對(duì)于復(fù)雜問(wèn)題的處理結(jié)果并不理想。不過(guò),通過(guò)對(duì)LeNet-5的網(wǎng)絡(luò)結(jié)構(gòu)的分析,可以直觀地了解卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建方法,可以為分析、構(gòu)建更復(fù)雜、更多層的卷積神經(jīng)網(wǎng)絡(luò)做準(zhǔn)備。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)2.AlexNetAlexNet于2012年由亞歷克斯·克里澤夫斯基(AlexKrizhevsky)、伊利亞·薩茨基(IlyaSutskever)和杰弗里·欣頓等人提出,在2012年的ILSVRC中取得了最佳的成績(jī),從此CNN變體才開(kāi)始被大眾熟知。ILSVRC是ImageNet發(fā)起的挑戰(zhàn),是計(jì)算機(jī)視覺(jué)領(lǐng)域的“奧運(yùn)會(huì)”。全世界的團(tuán)隊(duì)帶著他們的網(wǎng)絡(luò)來(lái)對(duì)ImageNet中數(shù)以千萬(wàn)的、共1000個(gè)類別的圖片進(jìn)行分類、定位、識(shí)別,這是一個(gè)相當(dāng)有難度的工作。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)AlexNet的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)輸入的圖像的尺寸是256×256,然后通過(guò)隨機(jī)裁剪,得到大小為227×227的圖像,將其輸入網(wǎng)絡(luò)中,最后得到1000個(gè)數(shù)值為0到1的輸出,代表輸入樣本的類別。2012年的ILSVRC中,使用了ImageNet數(shù)據(jù)集對(duì)AlexNet網(wǎng)絡(luò)進(jìn)行了訓(xùn)練,該數(shù)據(jù)包含來(lái)自22000多個(gè)類別的超過(guò)1500萬(wàn)個(gè)帶注釋的圖像。構(gòu)建網(wǎng)絡(luò)時(shí)使用了ReLU激活函數(shù),縮短了訓(xùn)練時(shí)間,這是因?yàn)镽eLU函數(shù)比傳統(tǒng)的tanh函數(shù)快幾倍。還使用了數(shù)據(jù)增強(qiáng)技術(shù),包括圖像轉(zhuǎn)換、水平反射等。添加了Dropout層,以解決訓(xùn)練數(shù)據(jù)過(guò)擬合的問(wèn)題。使用基于小批的SGD優(yōu)化算法訓(xùn)練網(wǎng)絡(luò),具有動(dòng)量和重量衰減的特定值。每一層權(quán)重均初始化為平均值為0、標(biāo)準(zhǔn)差為0.01的高斯分布,第二層、第四層和第五層的卷積的偏置被設(shè)置為1.0,而其他層的則設(shè)置為0,目的是加速初期學(xué)習(xí)的速率(因?yàn)榧せ詈瘮?shù)是ReLU,1.0的偏置可以讓大部分輸出為正),簡(jiǎn)稱學(xué)習(xí)率。學(xué)習(xí)率初始值為0.01,在訓(xùn)練結(jié)束前共減小3次,每次減小都出現(xiàn)在錯(cuò)誤率停止下降的時(shí)候,每次減小都是把學(xué)習(xí)率除以10。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)3.VGGNetVGGNet(VisualGeometryGroupNetwork)于2014年被牛津大學(xué)的卡倫·西蒙揚(yáng)(KarenSimonyan)和安德魯·西塞曼(AndrewZisserman)提出,主要特點(diǎn)是“深度且簡(jiǎn)潔”。深度指的是VGGNet有19層,遠(yuǎn)遠(yuǎn)超過(guò)了之前的CNN變體。簡(jiǎn)潔則在于它在結(jié)構(gòu)上一律采用步長(zhǎng)為1的3×3的卷積核,以及步長(zhǎng)為2的2×2的最大池化窗口。VGGNet一共有6種不同的網(wǎng)絡(luò)結(jié)構(gòu),但是每種結(jié)構(gòu)都含有5組卷積,每組卷積都使用3×3的卷積核,每組卷積后進(jìn)行2×2的最大池化,接下來(lái)是3個(gè)全連接層。在訓(xùn)練高級(jí)別的網(wǎng)絡(luò)時(shí),可以先訓(xùn)練低級(jí)別的網(wǎng)絡(luò),用前者獲得的權(quán)重初始化高級(jí)別的網(wǎng)絡(luò),可以加快網(wǎng)絡(luò)的收斂。常用卷積神經(jīng)網(wǎng)絡(luò)算法及其結(jié)構(gòu)VG

溫馨提示

  • 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)論