日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

深度学习与计算机视觉系列(10)_细说卷积神经网络

發(fā)布時間:2025/3/21 卷积神经网络 125 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习与计算机视觉系列(10)_细说卷积神经网络 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自:

深度學(xué)習(xí)與計算機視覺系列(10)_細說卷積神經(jīng)網(wǎng)絡(luò) - 龍心塵 - 博客頻道 - CSDN.NET
http://blog.csdn.net/longxinchen_ml/article/details/50545340

作者:寒小陽?&&?龍心塵?
時間:2016年1月。?
出處:?
http://blog.csdn.net/han_xiaoyang/article/details/50542880?
http://blog.csdn.net/longxinchen_ml/article/details/50545340?
聲明:版權(quán)所有,轉(zhuǎn)載請聯(lián)系作者并注明出處

1. 前言

前面九講對神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),組件,訓(xùn)練方法,原理等做了介紹。現(xiàn)在我們回到本系列的核心:計算機視覺,神經(jīng)網(wǎng)絡(luò)中的一種特殊版本在計算機視覺中使用最為廣泛,這就是大家都知道的卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)和普通的神經(jīng)網(wǎng)絡(luò)一樣,由『神經(jīng)元』按層級結(jié)構(gòu)組成,其間的權(quán)重和偏移量都是可訓(xùn)練得到的。同樣是輸入的數(shù)據(jù)和權(quán)重做運算,輸出結(jié)果輸入激勵神經(jīng)元,輸出結(jié)果。從整體上看來,整個神經(jīng)網(wǎng)絡(luò)做的事情,依舊是對于像素級別輸入的圖像數(shù)據(jù),用得分函數(shù)計算最后各個類別的得分,然后我們通過最小化損失函數(shù)來得到最優(yōu)的權(quán)重。之前的博文中介紹的各種技巧和訓(xùn)練方法,以及注意事項,在這個特殊版本的神經(jīng)網(wǎng)絡(luò)上依舊好使。

咳咳,我們來說說它的特殊之處,首先卷積神經(jīng)網(wǎng)絡(luò)一般假定輸入就是圖片數(shù)據(jù),也正是因為輸入是圖片數(shù)據(jù),我們可以利用它的像素結(jié)構(gòu)特性,去做一些假設(shè)來簡化神經(jīng)網(wǎng)絡(luò)的訓(xùn)練復(fù)雜度(減少訓(xùn)練參數(shù)個數(shù))。

2.卷積神經(jīng)網(wǎng)總體結(jié)構(gòu)一覽

我們前面講過的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)都比較一致,輸入層輸出層中間夾著數(shù)層隱藏層,每一層都由多個神經(jīng)元組成,層和層之間是全連接的結(jié)構(gòu),同一層的神經(jīng)元之間沒有連接。

卷積神經(jīng)網(wǎng)絡(luò)是上述結(jié)構(gòu)的一種特殊化處理,因為對于圖像這種數(shù)據(jù)而言,上面這種結(jié)構(gòu)實際應(yīng)用起來有較大的困難:就拿CIFAR-10舉例吧,圖片已經(jīng)很小了,是32*32*3(長寬各32像素,3個顏色通道)的,那么在神經(jīng)網(wǎng)絡(luò)當中,我們只看隱藏層中的一個神經(jīng)元,就應(yīng)該有32*32*3=3072個權(quán)重,如果大家覺得這個權(quán)重個數(shù)的量還行的話,再設(shè)想一下,當這是一個包含多個神經(jīng)元的多層神經(jīng)網(wǎng)(假設(shè)n個),再比如圖像的質(zhì)量好一點(比如是200*200*3的),那將有200*200*3*n= 120000n個權(quán)重需要訓(xùn)練,結(jié)果是拉著這么多參數(shù)訓(xùn)練,基本跑不動,跑得起來也是『氣喘吁吁』,當然,最關(guān)鍵的是這么多參數(shù)的情況下,分分鐘模型就過擬合了。別急,別急,一會兒我們會提到卷積神經(jīng)網(wǎng)絡(luò)的想法和簡化之處。

卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)比較固定的原因之一,是圖片數(shù)據(jù)本身的合理結(jié)構(gòu),類圖像結(jié)構(gòu)(200*200*3),我們也把卷積神經(jīng)網(wǎng)絡(luò)的神經(jīng)元排布成 width*height*depth的結(jié)構(gòu),也就是說這一層總共有width*height*depth個神經(jīng)元,如下圖所示。舉個例子說,CIFAR-10的輸出層就是1*1*10維的。另外我們后面會說到,每一層的神經(jīng)元,其實只和上一層里某些小區(qū)域進行連接,而不是和上一層每個神經(jīng)元全連接。?



?

3.卷積神經(jīng)網(wǎng)絡(luò)的組成層

在卷積神經(jīng)網(wǎng)絡(luò)中,有3種最主要的層:

  • 卷積運算層
  • pooling層
  • 全連接層

一個完整的神經(jīng)網(wǎng)絡(luò)就是由這三種層疊加組成的。?
結(jié)構(gòu)示例?
我們繼續(xù)拿CIFAR-10數(shù)據(jù)集舉例,一個典型的該數(shù)據(jù)集上的卷積神經(jīng)網(wǎng)絡(luò)分類器應(yīng)該有[INPUT - CONV - RELU - POOL - FC]的結(jié)構(gòu),具體說來是這樣的:

  • INPUT[32*32*3]包含原始圖片數(shù)據(jù)中的全部像素,長寬都是32,有RGB 3個顏色通道。
  • CONV卷積層中,沒個神經(jīng)元會和上一層的若干小區(qū)域連接,計算權(quán)重和小區(qū)域像素的內(nèi)積,舉個例子可能產(chǎn)出的結(jié)果數(shù)據(jù)是[32*32*12]的。
  • RELU層,就是神經(jīng)元激勵層,主要的計算就是max(0,x),結(jié)果數(shù)據(jù)依舊是[32*32*12]。
  • POOLing層做的事情,可以理解成一個下采樣,可能得到的結(jié)果維度就變?yōu)閇16*16*12]了。
  • 全連接層一般用于最后計算類別得分,得到的結(jié)果為[1*1*10]的,其中的10對應(yīng)10個不同的類別。和名字一樣,這一層的所有神經(jīng)元會和上一層的所有神經(jīng)元有連接。

這樣,卷積神經(jīng)網(wǎng)絡(luò)作為一個中間的通道,就一步步把原始的圖像數(shù)據(jù)轉(zhuǎn)成最后的類別得分了。有一個點我們要提一下,剛才說到了有幾種不同的神經(jīng)網(wǎng)絡(luò)層,其中有一些層是有待訓(xùn)練參數(shù)的,另外一些沒有。詳細一點說,卷積層和全連接層包含權(quán)重和偏移的;而RELU和POOLing層只是一個固定的函數(shù)運算,是不包含權(quán)重和偏移參數(shù)的。不過POOLing層包含了我們手動指定的超參數(shù),這個我們之后會提到。

總結(jié)一下:

  • 一個卷積神經(jīng)網(wǎng)絡(luò)由多種不同類型的層(卷幾層/全連接層/RELU層/POOLing層等)疊加而成。
  • 每一層的輸入結(jié)構(gòu)是3維的數(shù)據(jù),計算完輸出依舊是3維的數(shù)據(jù)。
  • 卷積層和全連接層包含訓(xùn)練參數(shù),RELU和POOLing層不包含。
  • 卷積層,全連接層和POOLing層包含超參數(shù),RELU層沒有。

下圖為CIFAR-10數(shù)據(jù)集構(gòu)建的一個卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖:?




既然有這么多不同的層級結(jié)構(gòu),那我們就展開來講講:

3.1 卷積層

說起來,這是卷積神經(jīng)網(wǎng)絡(luò)的核心層(從名字就可以看出來對吧-_-||)。

3.1.1 卷積層綜述

直觀看來,卷積層的參數(shù)其實可以看做,一系列的可訓(xùn)練/學(xué)習(xí)的過濾器。在前向計算過程中,我們輸入一定區(qū)域大小(width*height)的數(shù)據(jù),和過濾器點乘后等到新的二維數(shù)據(jù),然后滑過一個個濾波器,組成新的3維輸出數(shù)據(jù)。而我們可以理解成每個過濾器都只關(guān)心過濾數(shù)據(jù)小平面內(nèi)的部分特征,當出現(xiàn)它學(xué)習(xí)到的特征的時候,就會呈現(xiàn)激活/activate態(tài)。

局部關(guān)聯(lián)度。這是卷積神經(jīng)網(wǎng)絡(luò)的獨特之處其中之一,我們知道在高維數(shù)據(jù)(比如圖片)中,用全連接的神經(jīng)網(wǎng)絡(luò),實際工程中基本是不可行的。卷積神經(jīng)網(wǎng)絡(luò)中每一層的神經(jīng)元只會和上一層的一些局部區(qū)域相連,這就是所謂的局部連接性。你可以想象成,上一層的數(shù)據(jù)區(qū),有一個滑動的窗口,只有這個窗口內(nèi)的數(shù)據(jù)會和下一層神經(jīng)元有關(guān)聯(lián),當然,這個做法就要求我們手動敲定一個超參數(shù):窗口大小。通常情況下,這個窗口的長和寬是相等的,我們把長x寬叫做receptive field。實際的計算中,這個窗口是會『滑動』的,會近似覆蓋圖片的所有小區(qū)域。

舉個實例,CIFAR-10中的圖片輸入數(shù)據(jù)為[32*32*3]的,如果我們把receptive field設(shè)為5*5,那receptive field的data都會和下一層的神經(jīng)元關(guān)聯(lián),所以共有5*5*3=75個權(quán)重,注意到最后的3依舊代表著RGB 3個顏色通道。

如果不是輸入數(shù)據(jù)層,中間層的data格式可能是[16*16*20]的,假如我們?nèi)?*3的receptive field,那單個神經(jīng)元的權(quán)重為3*3*20=180。


?

局部關(guān)聯(lián)細節(jié)。我們剛才說到卷積層的局部關(guān)聯(lián)問題,這個地方有一個receptive field,也就是我們直觀理解上的『滑動數(shù)據(jù)窗口』。從輸入的數(shù)據(jù)到輸出數(shù)據(jù),有三個超參數(shù)會決定輸出數(shù)據(jù)的維度,分別是深度/depth,步長/stride 和 填充值/zero-padding

  • 所謂深度/depth,簡單說來指的就是卷積層中和上一層同一個輸入?yún)^(qū)域連接的神經(jīng)元個數(shù)。這部分神經(jīng)元會在遇到輸入中的不同feature時呈現(xiàn)activate狀態(tài),舉個例子,如果這是第一個卷積層,那輸入到它的數(shù)據(jù)實際上是像素值,不同的神經(jīng)元可能對圖像的邊緣。輪廓或者顏色會敏感。
  • 所謂步長/stride,是指的窗口從當前位置到下一個位置,『跳過』的中間數(shù)據(jù)個數(shù)。比如從圖像數(shù)據(jù)層輸入到卷積層的情況下,也許窗口初始位置在第1個像素,第二個位置在第5個像素,那么stride=5-1=4.
  • 所謂zero-padding是在原始數(shù)據(jù)的周邊補上0值的圈數(shù)。(下面第2張圖中的樣子)
  • 這么解釋可能理解起來還是會有困難,我們找兩張圖來對應(yīng)一下這三個量:


    ?

    這是解決ImageNet分類問題用到的卷積神經(jīng)網(wǎng)絡(luò)的一部分,我們看到卷積層直接和最前面的圖像層連接。圖像層的維度為[227*227*3],而receptive field設(shè)為11*11,圖上未標明,但是滑動窗口的步長stride設(shè)為4,深度depth為48+48=96(這是雙GPU并行設(shè)置),邊緣沒有補0,因此zero-padding為0,因此窗口滑完一行,總共停留次數(shù)為(data_len-receptive_field_len+2*zero-padding)/stride+1=(227-11+2*0)/4+1=55,因為圖像的長寬相等,因此縱向窗口數(shù)也是55,最后得到的輸出數(shù)據(jù)維度為55*55*96維。



    這是一張動態(tài)的卷積層計算圖,圖上的zero-padding為1,所以大家可以看到數(shù)據(jù)左右各補了一行0,窗口的長寬為3,滑動步長stride為2。

    關(guān)于zero-padding,補0這個操作產(chǎn)生的根本原因是,為了保證窗口的滑動能從頭剛好到尾。舉個例子說,上2圖中的上面一幅圖,因為(data_len-receptive_field_len+2*zero-padding)/stride剛好能夠整除,所以窗口左側(cè)貼著數(shù)據(jù)開始位置,滑到尾部剛好窗口右側(cè)能夠貼著數(shù)據(jù)尾部位置,因此是不需要補0的。而在下面那幅圖中,如果滑動步長設(shè)為4,你會發(fā)現(xiàn)第一次計算之后,窗口就無法『滑動』了,而尾部的數(shù)據(jù),是沒有被窗口『看到過』的,因此補0能夠解決這個問題。

    關(guān)于窗口滑動步長。大家可以發(fā)現(xiàn)一點,窗口滑動步長設(shè)定越小,兩次滑動取得的數(shù)據(jù),重疊部分越多,但是窗口停留的次數(shù)也會越多,運算律大一些;窗口滑動步長設(shè)定越長,兩次滑動取得的數(shù)據(jù),重疊部分越少,窗口停留次數(shù)也越少,運算量小,但是從一定程度上說數(shù)據(jù)信息不如上面豐富了。

    3.1.2 卷積層的參數(shù)共享

    首先得說卷積層的參數(shù)共享是一個非常贊的處理方式,它使得卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練計算復(fù)雜度和參數(shù)個數(shù)降低非常非常多。就拿實際解決ImageNet分類問題的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來說,我們知道輸出結(jié)果有55*55*96=290400個神經(jīng)元,而每個神經(jīng)元因為和窗口內(nèi)數(shù)據(jù)的連接,有11*11*3=363個權(quán)重和1個偏移量。所以總共有290400*364=105705600個權(quán)重。。。然后。。。恩,訓(xùn)練要累掛了。。。

    因此我們做了一個大膽的假設(shè),我們剛才提到了,每一個神經(jīng)元可以看做一個filter,對圖片中的數(shù)據(jù)窗區(qū)域做『過濾』。那既然是filter,我們干脆就假設(shè)這個神經(jīng)元用于連接數(shù)據(jù)窗的權(quán)重是固定的,這意味著,對同一個神經(jīng)元而言,不論上一層數(shù)據(jù)窗口停留在哪個位置,連接兩者之間的權(quán)重都是同一組數(shù)。那代表著,上面的例子中的卷積層,我們只需要 神經(jīng)元個數(shù)*數(shù)據(jù)窗口維度=96*11*11*3=34848個權(quán)重。

    如果對應(yīng)每個神經(jīng)元的權(quán)重是固定的,那么整個計算的過程就可以看做,一組固定的權(quán)重和不同的數(shù)據(jù)窗口數(shù)據(jù)做內(nèi)積的過程,這在數(shù)學(xué)上剛好對應(yīng)『卷積』操作,這也就是卷積神經(jīng)網(wǎng)的名字來源。另外,因為每個神經(jīng)元的權(quán)重固定,它可以看做一個恒定的filter,比如上面96個神經(jīng)元作為filter可視化之后是如下的樣子:


    ?

    需要說明的一點是,參數(shù)共享這個策略并不是每個場景下都合適的。有一些特定的場合,我們不能把圖片上的這些窗口數(shù)據(jù)都視作作用等同的。一個很典型的例子就是人臉識別,一般人的面部都集中在圖像的中央,因此我們希望,數(shù)據(jù)窗口滑過這塊區(qū)域的時候,權(quán)重和其他邊緣區(qū)域是不同的。我們有一種特殊的層對應(yīng)這種功能,叫做局部連接層/Locally-Connected Layer

    3.1.3 卷積層的簡單numpy實現(xiàn)

    我們假定輸入到卷積層的數(shù)據(jù)為X,加入X的維度為X.shape: (11,11,4)。假定我們的zero-padding為0,也就是左右上下不補充0數(shù)據(jù),數(shù)據(jù)窗口大小為5,窗口滑動步長為2。那輸出數(shù)據(jù)的長寬應(yīng)該為(11-5)/2+1=4。假定第一個神經(jīng)元對應(yīng)的權(quán)重和偏移量分別為W0b0,那我們就能算得,在第一行數(shù)據(jù)窗口停留的4個位置,得到的結(jié)果值分別為:

    • V[0,0,0] = np.sum(X[:5,:5,:] * W0) + b0
    • V[1,0,0] = np.sum(X[2:7,:5,:] * W0) + b0
    • V[2,0,0] = np.sum(X[4:9,:5,:] * W0) + b0
    • V[3,0,0] = np.sum(X[6:11,:5,:] * W0) + b0

    注意上述計算過程中,*運算符是對兩個向量進行點乘的,因此W0應(yīng)該維度為(5,5,4),同樣你可以計算其他位置的計算輸出值:

    • V[0,0,1] = np.sum(X[:5,:5,:] * W1) + b1
    • V[1,0,1] = np.sum(X[2:7,:5,:] * W1) + b1
    • V[2,0,1] = np.sum(X[4:9,:5,:] * W1) + b1
    • V[3,0,1] = np.sum(X[6:11,:5,:] * W1) + b1

    每一個神經(jīng)元對應(yīng)不同的一組W和b,在每個數(shù)據(jù)窗口停留的位置,得到一個輸出值。

    我們之前提到了卷積層在做的事情,是不斷做權(quán)重和窗口數(shù)據(jù)的點乘和求和。因此我們也可以把這個過程整理成一個大的矩陣乘法。

  • 看看數(shù)據(jù)端,我們可以做一個操作im2col將數(shù)據(jù)轉(zhuǎn)成一個可直接供神經(jīng)元filter計算的大矩陣。舉個例子說,輸入是[227*227*3]的圖片,而神經(jīng)元權(quán)重為[11*11*3],同時窗口移動步長為4,那我們知道數(shù)據(jù)窗口滑動過程中總共產(chǎn)生[(227-11)/4+1]*[(227-11)/4+1]=55*55=3025個局部數(shù)據(jù)區(qū)域,又每個區(qū)域包含11*11*3=363個數(shù)據(jù)值,因此我們想辦法把原始數(shù)據(jù)重復(fù)和擴充成一個[363*3025]的數(shù)據(jù)矩陣X_col,就可以直接和filter進行運算了。
  • 對于filter端(卷積層),假如厚度為96(有96個不同權(quán)重組的filter),每個filter的權(quán)重為[11*11*3],因此filter矩陣W_row維度為[96*363]
  • 在得到上述兩個矩陣后,我們的輸出結(jié)果即可以通過np.dot(W_row, X_col)計算得到,結(jié)果數(shù)據(jù)為[96*3025]維的。
  • 這個實現(xiàn)的弊端是,因為數(shù)據(jù)窗口的滑動過程中有重疊,因此我們出現(xiàn)了很多重復(fù)數(shù)據(jù),占用內(nèi)存較大。好處是,實際計算過程非常簡單,如果我們用類似BLAS這樣的庫,計算將非常迅速。

    另外,在反向傳播過程中,其實卷積對應(yīng)的操作還是卷積,因此實現(xiàn)起來也很方便。

    3.2 Pooling層

    簡單說來,在卷積神經(jīng)網(wǎng)絡(luò)中,Pooling層是夾在連續(xù)的卷積層中間的層。它的作用也非常簡單,就是**逐步地壓縮/減少數(shù)據(jù)和參數(shù)的量,也在一定程度上減小過擬合的現(xiàn)象。**Pooling層做的操作也非常簡單,就是將原數(shù)據(jù)上的區(qū)域壓縮成一個值(區(qū)域最大值/MAX或者平均值/AVERAGE),最常見的Pooling設(shè)定是,將原數(shù)據(jù)切成2*2的小塊,每塊里面取最大值作為輸出,這樣我們就自然而然減少了75%的數(shù)據(jù)量。需要提到的是,除掉MAX和AVERAGE的Pooling方式,其實我們也可以設(shè)定別的pooling方式,比如L2范數(shù)pooling。說起來,歷史上average pooling用的非常多,但是近些年熱度降了不少,工程師們在實踐中發(fā)現(xiàn)max pooling的效果相對好一些。

    一個對Pooling層和它的操作直觀理解的示意圖為:?


    ?


    上圖為Pooling層的一個直觀示例,相當于對厚度為64的data,每一個切片做了一個下采樣。下圖為Pooling操作的實際max操作。

    Pooling層(假定是MAX-Pooling)在反向傳播中的計算也是很簡單的,大家都知道如何去求max(x,y)函數(shù)的偏導(dǎo)。

    3.3 歸一化層(Normalization Layer)

    卷積神經(jīng)網(wǎng)絡(luò)里面有時候會用到各種各樣的歸一化層,尤其是早期的研究,經(jīng)常能見到它們的身影,不過近些年來的研究表明,似乎這個層級對最后結(jié)果的幫助非常小,所以后來大多數(shù)時候就干脆拿掉了。

    3.4 全連接層

    這是我們在介紹神經(jīng)網(wǎng)絡(luò)的時候,最標準的形式,任何神經(jīng)元和上一層的任何神經(jīng)元之間都有關(guān)聯(lián),然后矩陣運算也非常簡單和直接。現(xiàn)在的很多卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),末層會采用全連接去學(xué)習(xí)更多的信息。

    4. 搭建卷積神經(jīng)網(wǎng)結(jié)構(gòu)

    從上面的內(nèi)容我們知道,卷積神經(jīng)網(wǎng)絡(luò)一般由3種層搭建而成:卷積層,POOLing層(我們直接指定用MAX-Pooling)和全連接層。然后我們一般選用最常見的神經(jīng)元ReLU,我們來看看有這些『組件』之后,怎么『拼』出一個合理的卷積神經(jīng)網(wǎng)。

    4.1 層和層怎么排

    最常見的組合方式是,用ReLU神經(jīng)元的卷積層組一個神經(jīng)網(wǎng)絡(luò),同時在卷積層和卷積層之間插入Pooling層,經(jīng)過多次的[卷積層]=>[Pooling層]疊加之后,數(shù)據(jù)的總體量級就不大了,這個時候我們可以放一層全連接層,然后最后一層和output層之間是一個全連接層。所以總結(jié)一下,最常見的卷積神經(jīng)網(wǎng)結(jié)構(gòu)為:

    [輸入層] => [[ReLU卷積層]*N => [Pooling層]?]*M => [ReLU全連接層]*K => [全連接層]

    解釋一下,其中\(zhòng)*操作代表可以疊加很多層,而[Pooling層]?表示Pooling層其實是可選的,可有可無。N和M是具體層數(shù)。比如說[輸入層] -> [[ReLU卷積層]=>[ReLU卷積層]=>[Pooling層]]*3 -> [ReLU全連接層]*2 -> [全連接層]就是一個合理的深層的卷積神經(jīng)網(wǎng)。

    『在同樣的視野范圍內(nèi),選擇多層疊加的卷積層,而不是一個大的卷積層』

    這句話非常拗口,但這是實際設(shè)計卷積神經(jīng)網(wǎng)絡(luò)時候的經(jīng)驗,我們找個例子來解釋一下這句話:如果你設(shè)計的卷積神經(jīng)網(wǎng)在數(shù)據(jù)層有3層連續(xù)的卷積層,同時每一層滑動數(shù)據(jù)窗口為3*3,第一層每個神經(jīng)元可以同時『看到』3*3的原始數(shù)據(jù)層,那第二層每個神經(jīng)元可以『間接看到』(1+3+1)*(1+3+1)=5*5的數(shù)據(jù)層內(nèi)容,第三層每個神經(jīng)元可以『間接看到』(1+5+1)*(1+5+1)=7*7的數(shù)據(jù)層內(nèi)容。那從最表層看,還不如直接設(shè)定滑動數(shù)據(jù)窗口為7*7的,為啥要這么設(shè)計呢,我們來分析一下優(yōu)劣:

    • 雖然第三層對數(shù)據(jù)層的『視野』范圍是一致的。但是單層卷積層加7*7的上層滑動數(shù)據(jù)窗口,結(jié)果是這7個位置的數(shù)據(jù),都是線性組合后得到最后結(jié)果的;而3層卷積層加3*3的滑動數(shù)據(jù)窗口,得到的結(jié)果是原數(shù)據(jù)上7*7的『視野』內(nèi)數(shù)據(jù)多層非線性組合,因此這樣的特征也會具備更高的表達能力。
    • 如果我們假設(shè)所有層的『厚度』/channel數(shù)是一致的,為C,那7*7的卷積層,會得到C×(7×7×C)=49C2個參數(shù),而3層疊加的3*3卷積層只有3×(C×(3×3×C))=27C2個參數(shù)。在計算量上后者顯然是有優(yōu)勢的。
    • 同上一點,我們知道為了反向傳播方便,實際計算過程中,我們會在前向計算時保留很多中間梯度,3層疊加的3*3卷積層需要保持的中間梯度要小于前一種情況,這在工程實現(xiàn)上是很有好處的。

    4.2 層大小的設(shè)定

    話說層級結(jié)構(gòu)確定了,也得知道每一層大概什么規(guī)模啊。現(xiàn)在我們就來聊聊這個。說起來,每一層的大小(神經(jīng)元個數(shù)和排布)并沒有嚴格的數(shù)字規(guī)則,但是我們有一些通用的工程實踐經(jīng)驗和系數(shù):

    • 對于輸入層(圖像層),我們一般把數(shù)據(jù)歸一化成2的次方的長寬像素值。比如CIFAR-10是32*32*3,STL-10數(shù)據(jù)集是64*64*3,而ImageNet是224*224*3或者512*512*3。
    • 卷積層通常會把每個[濾子/filter/神經(jīng)元]對應(yīng)的上層滑動數(shù)據(jù)窗口設(shè)為3*3或者5*5,滑動步長stride設(shè)為1(工程實踐結(jié)果表明stride設(shè)為1雖然比較密集,但是效果比較好,步長拉太大容易損失太多信息),zero-padding就不用了。
    • Pooling層一般采用max-pooling,同時設(shè)定采樣窗口為2*2。偶爾會見到設(shè)定更大的采樣窗口,但是那意味著損失掉比較多的信息了。
    • 比較重要的是,我們得預(yù)估一下內(nèi)存,然后根據(jù)內(nèi)存的情況去設(shè)定合理的值。我們舉個例子,在ImageNet分類問題中,圖片是224*224*3的,我們跟在數(shù)據(jù)層后面3個3*3『視野窗』的卷積層,每一層64個filter/神經(jīng)元,把padding設(shè)為1,那么最后每個卷積層的output都是[224*224*64],大概需要1000萬次對output的激勵計算(非線性activation),大概花費72MB內(nèi)存。而工程實踐里,一般訓(xùn)練都在GPU上進行,GPU的內(nèi)存比CPU要吃緊的多,所以也許我們要稍微調(diào)動一下參數(shù)。比如AlexNet用的是11*11的的視野窗,滑動步長為4。

    4.3 典型的工業(yè)界在用卷積神經(jīng)網(wǎng)絡(luò)

    幾個有名的卷積神經(jīng)網(wǎng)絡(luò)如下:

    • LeNet,這是最早用起來的卷積神經(jīng)網(wǎng)絡(luò),Yann LeCun在論文LeNet提到。
    • AlexNet,2012 ILSVRC比賽遠超第2名的卷積神經(jīng)網(wǎng)絡(luò),和LeNet的結(jié)構(gòu)比較像,只是更深,同時用多層小卷積層疊加提到大卷積層。
    • ZF Net,2013 ILSVRC比賽冠軍,可以參考論文ZF Net
    • GoogLeNet,2014 ILSVRC比賽冠軍,Google發(fā)表的論文Going Deeper with Convolutions有具體介紹。
    • VGGNet,也是2014 ILSVRC比賽中的模型,有意思的是,即使這個模型當時在分類問題上的效果,略差于google的GoogLeNet,但是在很多圖像轉(zhuǎn)化學(xué)習(xí)問題(比如object detection)上效果奇好,它也證明卷積神經(jīng)網(wǎng)的『深度』對于最后的效果有至關(guān)重要的作用。預(yù)訓(xùn)練好的模型在pretrained model site可以下載。

    具體一點說來,VGGNet的層級結(jié)構(gòu)和花費的內(nèi)存如下:

    <code class="language-python hljs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">INPUT: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>x224x3] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">150</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>x224x64] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.2</span>M weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">728</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>x224x64] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">224</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.2</span>M weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">36</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">864</span> POOL2: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>x112x64] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">800</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>x112x128] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.6</span>M weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">64</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">73</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">728</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>x112x128] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">112</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.6</span>M weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">147</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">456</span> POOL2: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>x56x128] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>x56x256] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">800</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">128</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">294</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">912</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>x56x256] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">800</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">589</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">824</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>x56x256] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">56</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">800</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">589</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">824</span> POOL2: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>x28x256] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>x28x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">256</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">179</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">648</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>x28x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">359</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">296</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>x28x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">28</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">359</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">296</span> POOL2: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>x14x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>x14x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">359</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">296</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>x14x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">359</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">296</span> CONV3-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>x14x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>K weights: (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>)*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">359</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">296</span> POOL2: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>x7x512] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">25</span>K weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> FC: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>x1x4096] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span> weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">512</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">102</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">760</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">448</span> FC: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>x1x4096] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span> weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">16</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">777</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">216</span> FC: [<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>x1x1000] memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span> weights: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4096</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span> = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">096</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">000</span>TOTAL memory: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">24</span>M * <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> bytes ~= <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">93</span>MB / image (only forward! ~*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> bwd) TOTAL params: <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">138</span>M parameters</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li></ul>

    有意思的是,大家會注意到,在VGGNet這樣一個神經(jīng)網(wǎng)絡(luò)里,大多數(shù)的內(nèi)存消耗在前面的卷積層,而大多數(shù)需要訓(xùn)練的參數(shù)卻集中在最后的全連接層,比如上上面的例子里,全連接層有1億權(quán)重參數(shù),總共神經(jīng)網(wǎng)里也就1.4億權(quán)重參數(shù)。

    4.4 考慮點

    組一個實際可用的卷積神經(jīng)網(wǎng)絡(luò)最大的瓶頸是GPU的內(nèi)存。畢竟現(xiàn)在很多GPU只有3/4/6GB的內(nèi)存,最大的GPU也就12G內(nèi)存,所以我們應(yīng)該在設(shè)計卷積神經(jīng)網(wǎng)的時候多加考慮:

    • 很大的一部分內(nèi)存開銷來源于卷積層的激勵函數(shù)個數(shù)和保存的梯度數(shù)量。
    • 保存的權(quán)重參數(shù)也是內(nèi)存的主要消耗處,包括反向傳播要用到的梯度,以及你用momentum, Adagrad, or RMSProp這些算法時候的中間存儲值。
    • 數(shù)據(jù)batch以及其他的類似版本信息或者來源信息等也會消耗一部分內(nèi)存。

    5. 更多的卷積神經(jīng)網(wǎng)絡(luò)參考資料

    • DeepLearning.net tutorial是一個用Theano完整實現(xiàn)卷積神經(jīng)網(wǎng)的教程。
    • cuda-convnet2是多GPU并行化的實現(xiàn)。
    • ConvNetJS CIFAR-10 demo允許你手動設(shè)定參數(shù),然后直接在瀏覽器看卷積神經(jīng)網(wǎng)絡(luò)的結(jié)果。
    • Caffe,主流卷積神經(jīng)網(wǎng)絡(luò)開源庫之一。
    • Example Torch 7 ConvNet,在CIFAR-10上錯誤率只有7%的卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)。
    • Ben Graham’s Sparse ConvNet,CIFAR-10上錯誤率只有4%的實現(xiàn)。
    • Face recognition for right whales using deep learning,Kaggle看圖識別瀕臨滅絕右鯨比賽的冠軍隊伍卷積神經(jīng)網(wǎng)絡(luò)。

    總結(jié)

    以上是生活随笔為你收集整理的深度学习与计算机视觉系列(10)_细说卷积神经网络的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    国产无套一区二区三区久久 | 成人欧美日韩国产 | 日本特黄一级 | 欧美精品做受xxx性少妇 | 人人插人人射 | 欧美一二三区在线观看 | 日韩精品一区二区在线观看视频 | 欧美午夜剧场 | 亚洲精品99 | 日日爽天天操 | 日韩激情中文字幕 | 色婷婷色 | 精品久久久999 | 毛片视频电影 | 国产一线在线 | 久久99久久99免费视频 | 九九导航 | 国产亚洲精品久久久久久大师 | 五月天丁香综合 | 97精品国产97久久久久久 | 国产伦理精品一区二区 | 亚洲 欧美 另类人妖 | 婷婷av在线 | 国产欧美精品xxxx另类 | 天天色天天操天天爽 | 精品视频在线免费 | 日日干夜夜草 | 中文字幕第一页在线播放 | 99久久国产免费,99久久国产免费大片 | 日本黄色免费大片 | 国产欧美最新羞羞视频在线观看 | 久久精品爱视频 | 欧美日韩激情视频8区 | 又色又爽又黄高潮的免费视频 | 欧美日韩中文国产一区发布 | 九九久久久久99精品 | www最近高清中文国语在线观看 | 天天爽夜夜爽人人爽一区二区 | 色综合色综合色综合 | 91av原创 | 国产99久久久欧美黑人 | 国产精品久久久久久久久久尿 | 日本系列中文字幕 | 500部大龄熟乱视频 欧美日本三级 | 国内综合精品午夜久久资源 | 麻豆视频观看 | 九九综合九九综合 | 亚洲在线网址 | 国产xvideos免费视频播放 | 999久久久欧美日韩黑人 | 99re久久资源最新地址 | 九九热1| 国产精品淫片 | 久久亚洲在线 | 国产精品久久久久高潮 | 成年人在线观看免费视频 | 久久久久亚洲a | 国产精品毛片 | 日一日干一干 | 亚洲精品国产麻豆 | 免费裸体视频网 | 国产精品一区二区无线 | av成年人电影 | 国产美女精品视频免费观看 | 三级av网站 | 国产一区二区久久久久 | 国产91对白在线播 | 99国内精品久久久久久久 | 国产精品国产三级国产aⅴ9色 | 人人要人人澡人人爽人人dvd | 黄色一级网 | 精品高清美女精品国产区 | 婷婷激情影院 | 一区二区欧美激情 | 天天干天天做 | 不卡的av中文字幕 | 亚洲成aⅴ人在线观看 | 亚洲激情国产精品 | 亚洲精品裸体 | 五月婷激情 | 国产日韩欧美在线一区 | 亚洲精品乱码久久久久久高潮 | 天天天综合 | 在线观看激情av | 91麻豆精品国产91久久久无需广告 | 中文国产成人精品久久一 | 日韩久久精品一区 | av电影免费看 | 精品国产一区二区三区在线 | 免费成人黄色 | 国产伦精品一区二区三区照片91 | 久久免费播放视频 | 久久精品中文字幕一区二区三区 | 亚洲一区二区三区毛片 | 久久久免费看片 | 日韩在线中文字幕视频 | 永久精品视频 | 免费又黄又爽的视频 | av在线电影网站 | 九月婷婷综合网 | 成人免费网站在线观看 | 久久96国产精品久久99软件 | 18国产精品白浆在线观看免费 | 国产成人久久久77777 | 亚洲国产精品激情在线观看 | 欧美成人区 | 一级片视频在线 | 日韩一区二区三区高清免费看看 | 久久夜色电影 | 亚洲激情小视频 | 欧美精品你懂的 | 超碰在线天天 | 91精品1区| 亚洲视频免费在线观看 | 国模一二三区 | 婷婷五情天综123 | 伊人久久电影网 | 日韩区视频 | 国产高清精 | 天天操天天干天天综合网 | 亚洲春色综合另类校园电影 | 婷婷在线免费视频 | 新版资源中文在线观看 | 天天射天天舔天天干 | 国产伦精品一区二区三区免费 | 欧美一级黄大片 | 欧美日韩高清在线观看 | 中文在线| 天天干天天射天天操 | 午夜10000 | 最新高清无码专区 | 亚洲综合婷婷 | 久久久精品小视频 | 国产精品综合在线观看 | 麻豆91在线播放 | 久久精品首页 | 久久高清视频免费 | 天天干天天操人体 | 国模一二三区 | 国产又粗又猛又爽 | 国模吧一区 | 人人干人人超 | 国产日韩在线播放 | 久久久免费精品视频 | 亚洲天堂网在线播放 | 国产精品一区二区免费 | 亚洲欧美国产精品久久久久 | 亚洲日b视频 | av电影免费在线看 | 三级黄色a| 在线不卡视频 | 久久久久久久久久久久亚洲 | 91成人免费看片 | 国内免费的中文字幕 | 天天干天天操天天射 | 人人爱人人舔 | 国产美腿白丝袜足在线av | 国产又黄又硬又爽 | 国产午夜在线观看视频 | 久久精品精品电影网 | 国产高清日韩欧美 | 亚洲永久精品一区 | 国产精品中文字幕在线播放 | 欧美日韩一区二区三区在线观看视频 | 欧美性色黄大片在线观看 | 韩国av免费观看 | www.av免费| 成人午夜在线观看 | 久久成人精品电影 | 视频一区二区三区视频 | 国产精品视频免费在线观看 | 久久999精品 | 丁香综合五月 | 中文字幕欲求不满 | 精品国产伦一区二区三区观看体验 | 色橹橹欧美在线观看视频高清 | 91成人短视频在线观看 | 国产综合福利在线 | 国产在线91精品 | 正在播放 久久 | 91免费国产在线观看 | 日韩欧美国产视频 | 我要色综合天天 | 中文字幕在线播放第一页 | 亚洲一级电影视频 | 色a资源在线 | 亚洲播播 | 99国产精品久久久久久久久久 | 成人免费观看网站 | 一级久久精品 | 人人搞人人干 | 成年人免费在线观看网站 | 国产精品视频免费 | 免费色视频网址 | 亚洲伊人第一页 | 国产成人一区在线 | 亚洲天堂色婷婷 | 国产3p视频| 狠狠色丁香婷婷综合视频 | 欧美一性一交一乱 | 玖玖玖在线观看 | 久久五月天综合 | 97av免费视频| 国产精品乱码久久 | 午夜少妇av | 黄色三级免费片 | 深爱激情五月综合 | 天天操天天曰 | 国产精品色 | 国产在线色 | 久久精品永久免费 | 免费人做人爱www的视 | 天天在线免费视频 | 人人要人人澡人人爽人人dvd | 日本成人a | 亚洲精品久久久久中文字幕二区 | 久草在线免费资源站 | 国产精品黄网站在线观看 | 人人插人人艹 | 怡红院av久久久久久久 | 欧美日韩国产精品一区二区亚洲 | 色多多污污 | 亚在线播放中文视频 | 婷婷综合导航 | 日韩在线视频免费观看 | 国产91精品在线播放 | 日韩欧美电影在线 | 精品久久久一区二区 | avcom在线| 99re8这里有精品热视频免费 | 国产美腿白丝袜足在线av | 91精品视频在线播放 | 韩日精品在线观看 | 欧美日韩视频在线观看一区二区 | 日韩电影中文字幕在线 | 国产精品免费视频网站 | 狠狠干狠狠操 | 久久这里只精品 | 国产精品毛片一区视频播 | 九九久久久久久久久激情 | 97超碰人人模人人人爽人人爱 | 婷婷久久网站 | 91精品国产综合久久福利不卡 | 99热这里有精品 | 波多野结衣视频一区 | 91精品在线观看视频 | 久久综合五月 | 国产黄色理论片 | 久久久久久久影院 | 欧美大片大全 | 国产色视频一区二区三区qq号 | 丁香久久久 | 97香蕉超级碰碰久久免费软件 | 美女激情影院 | 99成人免费视频 | 美女网站视频免费黄 | 成人黄色在线电影 | 久久精品一区二区三区国产主播 | 中文av在线播放 | 国产粉嫩在线观看 | 婷婷射五月 | 色老板在线视频 | 免费a v观看| 在线观看一 | 国产二区视频在线观看 | 国产精品久久久久久久99 | www成人av | 欧美激情综合网 | 国产精品国产三级国产aⅴ无密码 | 久久久影视 | 欧亚日韩精品一区二区在线 | 日韩精品免费在线 | 亚州av免费| 91看成人| 丁香六月婷婷开心 | 国产永久免费高清在线观看视频 | 中文成人字幕 | 国产精品一区二区免费视频 | av丁香| 91免费国产在线观看 | 国产成人精品电影久久久 | 91麻豆产精品久久久久久 | 久久久精品欧美 | 日韩av中文在线观看 | 免费黄色一区 | 久久国产免费视频 | 黄色av网站在线观看 | 国产亚洲一区二区三区 | 精品久久久成人 | 成人免费网视频 | 麻豆精品视频 | 天天干 天天摸 天天操 | 婷婷深爱网 | 国产黄在线播放 | 亚洲精品高清在线 | 在线91播放 | 最近2019中文免费高清视频观看www99 | 天天操天天干天天玩 | 亚洲成人av影片 | 国产乱视频| 超碰公开在线 | 亚洲毛片在线观看. | 天天操天天添 | 中文字幕色网站 | 一本色道久久综合亚洲二区三区 | 国产一级视频在线 | 东方av免费在线观看 | 成人看片 | 91精品一区二区三区蜜桃 | 欧美地下肉体性派对 | 欧美日韩视频免费看 | a特级毛片| 9999激情| 五月婷婷在线观看视频 | 久久久久久久久久久网 | 国产乱码精品一区二区三区介绍 | 中文字幕有码在线观看 | 亚洲黄色在线播放 | 免费看片在线观看 | 伊人久久精品久久亚洲一区 | 日韩欧美国产免费播放 | 日韩av免费在线电影 | 久久天天躁狠狠躁亚洲综合公司 | 精品亚洲午夜久久久久91 | 国产一区二区在线精品 | 日韩精品不卡在线 | 久久av免费观看 | 日韩在线视频在线观看 | 午夜免费电影院 | 婷婷 中文字幕 | 国产码电影 | 91成人精品国产刺激国语对白 | 中文字幕一区在线 | 欧美日韩在线第一页 | 日韩剧 | 精品视频免费在线 | 精品你懂的| 天堂va在线观看 | 国产精品毛片久久久久久 | 在线看国产 | 激情网综合 | 免费合欢视频成人app | 欧美黑人性爽 | 狠狠干网址 | 在线观看精品一区 | 日本婷婷色 | 丁香综合五月 | 久草免费色站 | 天天色婷婷| 国产精品一区二区免费看 | 在线亚洲激情 | 日本在线视频网址 | av不卡在线看 | 91丨九色丨蝌蚪丨老版 | av电影在线观看 | 久久极品 | 亚洲综合少妇 | 国产精品久久久久久吹潮天美传媒 | 精品日韩中文字幕 | 亚洲爱视频 | 丁香婷婷激情国产高清秒播 | 黄网站a| 美女激情影院 | 麻豆视频国产在线观看 | 久久综合婷婷 | 久久国内精品 | 国产特黄色片 | 在线网址你懂得 | 亚洲精品videossex少妇 | 成人蜜桃网 | 亚洲永久字幕 | 亚洲国产精品成人va在线观看 | 国产精品一区二区三区观看 | 精品日韩在线一区 | 中文字幕在线观看网址 | 中文字幕在线看视频国产 | 久久久久激情电影 | 九九热久久久 | 69精品久久 | 天天做天天爱夜夜爽 | 探花视频网站 | 国产精品福利午夜在线观看 | 97超在线视频 | 蜜桃视频色 | 18pao国产成视频永久免费 | 久久99精品久久久久久 | 色婷婷狠| 中文字幕精品一区二区三区电影 | 久草视频在线资源 | 天天爱天天色 | 亚洲精品男人的天堂 | 在线观看a视频 | 国产亚洲一区 | 综合亚洲视频 | 手机av片| 亚洲精品玖玖玖av在线看 | 免费日韩一区二区三区 | 欧美一级免费片 | 亚洲精品午夜久久久久久久久久久 | 男女啪啪网站 | 久久看毛片 | 免费黄色在线播放 | 久久精品久久精品久久39 | 可以免费看av | 天天综合网天天综合色 | 在线国产中文字幕 | 96超碰在线 | 日本精品视频免费观看 | 在线看v片成人 | 国产毛片久久久 | 午夜手机看片 | 日韩在线观 | 国产精品久久久久久高潮 | 日本最新高清不卡中文字幕 | 国产乱对白刺激视频在线观看女王 | 久久综合五月天婷婷伊人 | 久久99精品波多结衣一区 | 国产成人精品一区二区三区在线观看 | 久久99精品久久久久久秒播蜜臀 | 国产网红在线 | 色婷婷色 | 婷婷精品在线视频 | 欧美大片大全 | 97国产情侣爱久久免费观看 | 久久久久久久久毛片精品 | 黄色成人小视频 | 麻豆影视在线免费观看 | 在线观看免费视频 | 国产精品99久久免费黑人 | 一级做a视频 | 日韩久久在线 | 一个色综合网站 | 成人黄色在线视频 | 天天做日日做天天爽视频免费 | 91精品啪在线观看国产81旧版 | 国产伦理久久精品久久久久_ | 91亚洲激情 | 国产欧美最新羞羞视频在线观看 | 五月天开心 | 在线观看精品 | 在线三级播放 | 国产亚洲精品久久久久秋 | 在线精品视频免费播放 | 久久精品综合一区 | 狠狠色免费 | 国产分类视频 | 日韩精品免费一区二区三区 | 草免费视频| 九九色在线观看 | 国产小视频在线看 | 久久久精品国产一区二区 | 亚洲国产三级在线 | 国产精品自产拍在线观看中文 | 超碰在线人人 | 一区二区三区精品在线视频 | 国产精品久久久99 | 久久成人高清 | 国产91精品一区二区绿帽 | 99久久99视频 | 国产成人a亚洲精品v | 婷婷去俺也去六月色 | 国产91综合一区在线观看 | 91视频麻豆视频 | 天天做夜夜做 | 少妇自拍av | 欧美了一区在线观看 | 亚洲国产片色 | 在线国产91| 中文字幕在线免费播放 | 手机av片 | 色五丁香 | 国产视频欧美视频 | 亚洲精品电影在线 | 激情偷乱人伦小说视频在线观看 | 丁香六月婷婷开心婷婷网 | 亚洲第一伊人 | 亚洲精品国产高清 | 国产精品视频大全 | 99久久精品国产网站 | 久久国产一二区 | 91传媒在线观看 | 亚洲一区二区三区精品在线观看 | 天天综合婷婷 | 日韩一区二区三区视频在线 | 婷婷色视频| www色网站| 久久极品 | 一区二区在线影院 | 美女一二三区 | 日韩一级黄色大片 | 黄色一级大片免费看 | 国产中文字幕视频在线 | 最近高清中文在线字幕在线观看 | 久久一区二区三区国产精品 | 精品字幕在线 | 亚洲 欧洲 国产 日本 综合 | 99热在线观看 | 人人爽夜夜爽 | 成年人在线观看免费视频 | 精品日本视频 | 日韩.com| 激情欧美一区二区三区免费看 | 日本三级在线观看中文字 | 在线亚洲欧美视频 | 亚洲精品黄色在线观看 | 99自拍视频在线观看 | 久久久久久国产精品美女 | 亚洲精品免费观看视频 | 91看片网址 | www.夜夜操.com | 国产成人精品一区二区在线 | 国产精品美女网站 | 欧洲激情在线 | 中文字幕在线免费97 | 夜色资源站国产www在线视频 | 91人人澡人人爽人人精品 | 亚洲人人爱| 成人午夜免费剧场 | 欧美日韩另类在线观看 | 91视频在线自拍 | 日韩素人在线观看 | 国产69久久久欧美一级 | 91污污视频在线观看 | 国产人免费人成免费视频 | 久草a视频 | 免费在线观看av网址 | 国产精品www | 欧美日韩午夜爽爽 | 欧洲精品码一区二区三区免费看 | 91私密视频 | 美女久久精品 | 91在线操| 日韩精品中文字幕久久臀 | 99亚洲精品在线 | 伊人天天狠天天添日日拍 | 国产精品无 | 黄色特一级 | 精品久久1 | 91网页版免费观看 | 国产成人99av超碰超爽 | 久草视频免费在线播放 | 日韩专区在线 | 涩涩网站在线 | av在线com| 干 操 插| 久久人网 | 中文字幕在线观看91 | 字幕网av| 九精品 | 色综合久 | 中文字幕a在线 | 国产黄色av| 91丨九色丨蝌蚪丨老版 | 成人h动漫精品一区二 | 精品国产日本 | 久久午夜鲁丝片 | 婷婷久久亚洲 | 天天综合天天做天天综合 | 国产精品免费不卡 | 免费观看国产成人 | 免费在线观看av网址 | av先锋影音少妇 | 亚洲精品日韩av | 中文字幕美女免费在线 | 精品国产综合区久久久久久 | 中文字幕av在线 | 精品在线播放 | 中文字幕亚洲不卡 | 亚洲一区精品二人人爽久久 | 亚洲一级影院 | 久久精品—区二区三区 | 特级毛片在线免费观看 | 国产香蕉视频 | 四虎海外影库www4hu | 久久久久国产精品免费网站 | 美女久久久 | 日韩av片无码一区二区不卡电影 | 欧美在线18 | 久久天天躁 | 国产午夜一级毛片 | 日韩精品在线免费播放 | 国产亚洲精品久久19p | 国产黄大片 | 视频91在线| av一区二区三区在线观看 | 国产精品久久久久久久久久久久午 | 久久精品久久99精品久久 | 丁香国产视频 | 91精品国自产在线 | 91色在线观看 | 国产精品免费人成网站 | 在线观看视频在线 | av千婊在线免费观看 | 久久成人精品视频 | 久久一精品 | 日韩av电影手机在线观看 | 久久免费久久 | 黄色小说视频网站 | 黄色a在线观看 | 99久久精品免费看国产免费软件 | www蜜桃视频 | 国产精品久久久久永久免费看 | www.91国产 | 国产一区二区三区高清播放 | 91精品国 | 在线视频欧美日韩 | 四虎www| 成人久久18免费网站图片 | 国产高清无av久久 | 中文字幕乱码日本亚洲一区二区 | 91视频观看免费 | 亚洲精品动漫在线 | 依人成人综合网 | 91av精品| 日韩欧美在线免费观看 | 久青草国产在线 | 日韩高清毛片 | 亚洲免费视频在线观看 | 精品久久久亚洲 | 99久久er热在这里只有精品15 | www.黄色小说.com | 麻豆视频国产在线观看 | 色天天 | 午夜精品久久久久久久久久久久久久 | 天天操天天射天天添 | 日韩精品一区二区不卡 | 精品一二| 91在线精品播放 | 国产成人精品在线播放 | 免费一区在线 | 久草在线视频在线观看 | 精品免费视频. | 美女国内精品自产拍在线播放 | 日韩av在线看 | 国产裸体无遮挡 | 国产激情久久久 | 丁香高清视频在线看看 | 亚洲精品国产精品乱码不99热 | 91精品小视频 | 色视频在线免费观看 | 国产精品成人一区二区 | 日日日日 | 成人午夜电影网 | 成人作爱视频 | 久久网址| 在线观看91久久久久久 | 91麻豆文化传媒在线观看 | 四虎永久免费网站 | 国模精品在线 | 国产特黄色片 | 激情电影在线观看 | 中文字幕网站 | 日本在线观看中文字幕 | 玖玖玖国产精品 | 国产一性一爱一乱一交 | 500部大龄熟乱视频 欧美日本三级 | 色婷婷激情电影 | 久久国产免费 | 日韩欧美精品在线视频 | 国产区免费在线 | 亚洲欧美国产日韩在线观看 | 九九综合九九综合 | 精品美女久久 | 欧美va天堂va视频va在线 | 香蕉视频在线观看免费 | 国产精品嫩草影视久久久 | 免费a级黄色毛片 | 国产综合福利在线 | 成人一级影视 | 亚洲视频axxx | 成人a在线观看高清电影 | 成人黄色在线 | 久草久视频 | 人人草人人做 | 日韩精品高清视频 | 国产原创中文在线 | 91精品中文字幕 | 国产免费叼嘿网站免费 | 亚洲日本中文字幕在线观看 | 国产精品99久久久精品免费观看 | 日韩一二三区不卡 | 狠狠色丁香久久婷婷综 | 国产精品综合久久久 | 久久综合天天 | 四虎成人在线 | 亚洲天堂香蕉 | 成人免费在线观看入口 | 天天操网址 | 中文字幕在线播放第一页 | 黄色精品久久 | 国内久久久| 久久久久久久99精品免费观看 | 98超碰在线 | 国产91学生粉嫩喷水 | 99免在线观看免费视频高清 | 香蕉在线视频播放网站 | 99免费| 91精品导航| 在线电影日韩 | www.久久久| 日韩a在线 | 亚洲最新合集 | 国产麻豆精品在线观看 | 69国产在线观看 | 香蕉视频在线播放 | 国产999免费视频 | 99久久综合国产精品二区 | 国产精品久久久久久久久久免费看 | 国产精品久久久久久久久久了 | 免费网站观看www在线观看 | 亚洲日本欧美在线 | 免费在线观看av的网站 | 奇米影视777四色米奇影院 | 最近能播放的中文字幕 | 久久精品一二三区 | 国产成人精品久久久久蜜臀 | 日本特黄特色aaa大片免费 | 亚洲黄色软件 | 亚洲精品综合一二三区在线观看 | 麻豆免费视频网站 | 天天干夜夜操视频 | 五月宗合网 | 在线视频 一区二区 | 成人免费视频播放 | 欧美在线日韩在线 | 国产精品久久久久久a | 午夜精品成人一区二区三区 | 久久久久久久久久久网 | 久草在线视频精品 | 人人射网站| 又紧又大又爽精品一区二区 | 蜜臀av性久久久久av蜜臀妖精 | 97超级碰碰碰碰久久久久 | 日韩一区二区三区在线观看 | 西西444www大胆无视频 | 国产无吗一区二区三区在线欢 | av资源免费在线观看 | 欧美视频不卡 | 黄色成人av| 碰超人人| 在线观看视频一区二区 | 中文字幕乱码一区二区 | 国产精品免费久久 | 国产精品99久久久 | 久久99视频免费观看 | 夜夜摸夜夜爽 | www.亚洲精品在线 | 九九热精品在线 | 一区二区视频免费在线观看 | 97操碰| 国产午夜一级毛片 | 国产综合婷婷 | 一本一道波多野毛片中文在线 | 国产精品高清在线 | 中文字幕视频一区 | 日韩免费视频一区二区 | 免费av网址大全 | 美国人与动物xxxx | 国产精品精品国产婷婷这里av | 色九九视频 | 中文字幕人成不卡一区 | 国产在线a | 国产精品女人久久久久久 | 久久激情视频 | 欧美日产在线观看 | 中文字幕久久久精品 | 一区二区三区 中文字幕 | 99综合电影在线视频 | 色婷婷视频网 | 99色在线视频 | 最近中文字幕在线中文高清版 | 97精品国产一二三产区 | 国产亚洲免费观看 | 91中文字幕 | 国产成a人亚洲精v品在线观看 | 2019免费中文字幕 | 欧美一级电影在线观看 | 91视频首页 | 欧美日韩午夜在线 | 国产精品美女毛片真酒店 | 午夜影视剧场 | 天躁狠狠躁| 97超碰免费| 国产精品入口传媒 | 成人av片免费观看app下载 | 最近中文字幕在线中文高清版 | 亚洲电影成人 | 久久综合射 | 最近中文字幕久久 | 国产最新视频在线 | 久久成年人 | 国产亚洲片 | 国产免费亚洲高清 | 97精品视频在线 | 免费a级大片 | 国产小视频在线免费观看 | 亚洲高清av在线 | 日韩大片在线免费观看 | 91porny九色在线播放 | 九九热视频在线 | 亚洲在线日韩 | 黄色91在线| av丝袜在线| av手机在线播放 | 免费在线观看午夜视频 | 成x99人av在线www | 亚洲第一久久久 | 亚洲国产精品激情在线观看 | 亚洲精品在线资源 | 91精品久久久久久久久久入口 | 亚洲精品中文字幕在线观看 | 日韩欧美网址 | 免费男女羞羞的视频网站中文字幕 | 在线探花 | 日本一区二区三区视频在线播放 | 欧美日韩国产亚洲乱码字幕 | 99视频在线精品国自产拍免费观看 | 黄色大片网 | 中文字幕av有码 | 亚洲精品小区久久久久久 | 五月婷婷丁香网 | 丁香六月婷婷开心婷婷网 | 亚洲视频2| 婷婷成人亚洲综合国产xv88 | 欧美一级性 | 操操操夜夜操 | 大胆欧美gogo免费视频一二区 | 91成人在线观看喷潮 | 91爱爱视频 | 亚洲韩国一区二区三区 | 婷婷在线网 | 亚洲欧美日韩一区二区三区在线观看 | 麻豆视频免费播放 | 色综合中文字幕 | 精品久久一 | 日韩一二区在线 | 日一日操一操 | 黄色特一级 | 婷婷综合影院 | 久久久国产精品人人片99精片欧美一 | www.狠狠色 | 激情网综合 | 青青河边草免费视频 | 在线一区二区三区 | 九九九九九精品 | 色婷婷色 | 午夜精品影院 | 亚洲五月 | 国产精品igao视频网入口 | 久久久久久久久爱 | 亚洲精品裸体 | 成人午夜电影免费在线观看 | 国产亚洲精品女人久久久久久 | 三级黄色a | 色综合久久五月 | av成人亚洲 | 在线观看视频一区二区三区 | a午夜电影| 日韩精品欧美专区 | 97精品国产97久久久久久免费 | 日本99干网 | 在线免费观看国产视频 | 国产精品v欧美精品v日韩 | 亚洲aⅴ一区二区三区 | 狠狠插天天干 | 色综合天天狠天天透天天伊人 | 久久观看最新视频 | 欧美精彩视频在线观看 | 国产福利小视频在线 | 精品久久久久久国产偷窥 | 在线性视频日韩欧美 | 日本中文字幕久久 | 国产成人免费在线观看 | 国产一区二区观看 | 国产黄色在线网站 | 日韩乱码在线 | 最近中文字幕免费观看 | 欧亚日韩精品一区二区在线 | 久久久久久国产一区二区三区 | 国产成人三级在线观看 | 中文字幕亚洲情99在线 | 伊人亚洲精品 | 香蕉视频导航 | 最近中文字幕大全中文字幕免费 | 色播激情五月 | 国产精品视频在线观看 | 五月婷网站| 日韩综合视频在线观看 | 99热九九这里只有精品10 | 日韩久久久久久久久 | 亚洲精品美女久久17c | 日韩在线免费高清视频 | a视频在线 | 久久免费一 | 中文字幕在线一二 | 97色国产 | 精品a视频 | 美女一二三区 | 亚洲永久精品国产 | 天天操综合 | 综合伊人av | 五月激情婷婷丁香 | 999色视频 | 国产精品2区| 狠狠色丁香九九婷婷综合五月 | 欧美另类xxx | 免费在线看成人av | 毛片网免费 | 在线观看成人福利 | 在线播放91 | 久久视频 | 精品亚洲国产视频 | 二区三区在线观看 | 香蕉精品视频在线观看 | 精品在线亚洲视频 | 免费视频91蜜桃 | 日韩三级免费 | 色91在线视频 | 激情文学综合丁香 | 国产中文a| 97精品国产91久久久久久 | 国内视频在线 | 国产精品福利一区 | 一区二区三区日韩精品 | 88av视频 | 99国产在线视频 | 夜夜爽www | 亚洲精品乱码久久久久久蜜桃不爽 | 色吊丝在线永久观看最新版本 | 成人永久视频 | 国产成人精品一区二区在线观看 | 黄色毛片在线观看 | 片黄色毛片黄色毛片 | 在线看免费 | 正在播放一区 | 中文字幕日韩有码 | 免费亚洲成人 | 又色又爽又激情的59视频 | 欧美 日韩精品 | 97超碰国产在线 | 91麻豆精品国产午夜天堂 | 亚洲精品白浆高清久久久久久 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 天天射天天舔天天干 | 精品久久久久一区二区国产 | 亚洲影院色 | 国产无套精品久久久久久 | 精品国内自产拍在线观看视频 | 国产手机av在线 | 免费在线观看视频一区 | 一本一本久久a久久精品综合 | 欧美一级日韩免费不卡 | 国产成人精品一区在线 | 一区二区男女 | 2021国产精品 | 国产 日韩 中文字幕 | 欧美精品中文 | 欧美精品中文 | 夜夜天天干| 国产精品一区二区久久 | 九九色在线 | 久久你懂得 | 国产拍在线 | 三级av网 | 久久蜜桃av | 国产一区二区在线免费视频 | 亚洲精品1234区| 中文在线8新资源库 | 中文字幕频道 | 欧洲亚洲激情 | 久久成人视屏 | 五月婷亚洲| 久久精品国产一区二区三 | 亚洲国产成人久久综合 | 综合av在线 | 国产999在线 | 久久综合色8888 | 国产视频一区二区在线 | 免费在线观看毛片网站 | 久久视频中文字幕 | 国内精品久久久久久中文字幕 | 欧美日韩视频 | av免费黄色 | 韩国av免费观看 | 黄色大片免费网站 | 成 人 黄 色 视频 免费观看 | 日日夜夜骑 | 丝袜网站在线观看 | 日韩av电影中文字幕 | 日韩激情视频在线 | 在线观看亚洲精品视频 | 最近中文字幕国语免费av | 日韩久久久久久久 | 四虎最新域名 | 国产成人精品一区二区三区在线观看 | 国产成人av福利 | 精品成人网 | 天天躁日日躁狠狠躁av中文 |