23 經(jīng)典卷積神經(jīng)網(wǎng)絡(luò) LeNet【動手學(xué)深度學(xué)習(xí)v2】

LeNet
- 由AT&T貝爾實(shí)驗(yàn)室的研究員Yann LeCun在1989年提出的(并以其命名)
- 目的是用來做手寫數(shù)字識別
知名度最高的就是MNIST數(shù)據(jù)集(LeNet模型提出時(shí)所附帶的數(shù)據(jù)集)

- 雖然只有5w個(gè)數(shù)據(jù),但是在當(dāng)時(shí)來講還是一個(gè)很大的數(shù)據(jù)集,當(dāng)時(shí)的內(nèi)存只有幾M
- 圖像的大小是28*28,單通道灰度圖
LeNet架構(gòu)

- 每個(gè)卷積塊中的基本單元是一個(gè)卷積層、一個(gè)sigmoid激活函數(shù)和平均匯聚層(雖然ReLU和最大匯聚層更有效,但它們在20世紀(jì)90年代還沒有出現(xiàn))
- 每個(gè)卷積層使用5*5卷積核和一個(gè)sigmoid激活函數(shù),這些層將輸入映射到多個(gè)二維特征輸出,通常同時(shí)增加通道的數(shù)量
- 每個(gè)2×2池化操作通過空間下采樣將維數(shù)減少4倍
實(shí)現(xiàn)流程
- 模型的輸入是32*32大小的image(MNIST數(shù)據(jù)集的圖片大小是28*28,這里模型的輸入為什么和數(shù)據(jù)集中圖片的大小不一致?因?yàn)樵诰矸e塊中每一層的特征相比上一層的高度和寬度都減小了,所以對輸入的圖片進(jìn)行了兩個(gè)像素的padding處理,來補(bǔ)償5*5卷積核導(dǎo)致的特征減少)----nn.Conv2d(1,6,kernel_size=5,padding=2),nn.sigmoid(),這里的padding等于2指的是上下左右各填充2行,所以28*28就變成了(28+2+2)*(28+2+2),sigmoid()函數(shù)用于增加模型的非線性
- 接下來放入一個(gè)5*5的卷積層中,輸出是28*28*6,這里由于前一步進(jìn)行了填充,所以輸出的大小是28*28,與輸入圖片的尺寸相同
- 再用一個(gè)2*2的pooling層,使上一步的輸出由28*28*6變成了14*14*6
- 然后又使用了一個(gè)5*5的卷積層,使上一步的輸出由14*14*6變成了10*10*16,由于卷積之前沒有進(jìn)行padding,所以卷積之后的特征圖尺寸的高度和寬度都減少了4個(gè)像素
- 再用同樣2*2的pooling層,使上一步的輸出由10*10*16變成了5*5*16
- 接著將上一步的輸出展平成為一個(gè)向量,然后輸入進(jìn)一個(gè)120的全連接層,再將結(jié)果輸入進(jìn)一個(gè)84的全連接層----nn.Flatten()
- 最后通過一個(gè)Gauss(高斯)層,也可以認(rèn)為是一個(gè)全連接層,得到一個(gè)10層的輸出--0到9的10個(gè)數(shù)字的概率(輸出層的10維對應(yīng)最后輸出的結(jié)果的數(shù)量)
- 模型共有兩個(gè)卷積層、兩個(gè)全連接層、兩個(gè)池化層和一個(gè)輸出層
總結(jié)
- Lenet是是最早發(fā)布的卷積神經(jīng)網(wǎng)絡(luò)之一,因其在計(jì)算機(jī)視覺任務(wù)中的高效性能而受到廣泛關(guān)注
- 先用卷積層來學(xué)習(xí)圖片的空間信息,通過池化層降低圖片的敏感度
- 然后使用全連接層來轉(zhuǎn)換到類別空間,得到10類
- 兩個(gè)卷積層再加一個(gè)多層感知機(jī),最終得到從圖片到類別的映射
Q&A
- 池化和卷積是不是更適合圖像這類型的數(shù)據(jù),而對于時(shí)序性的數(shù)據(jù)(做分類)是不是不適用這類數(shù)據(jù)??QA P3 - 00:11?
- LeNet第二個(gè)卷積層通道數(shù)增加到了16,這意味著信息量被放大了嗎?或者說信息在通道中是怎樣流通的??QA P3 - 01:09?
- 為什么用view而不用reshape呢??QA P3 - 02:56?
- 選擇深度學(xué)習(xí)模型是用mlp還是cnn,是一種試的心態(tài)來選擇還是說應(yīng)該先從理論上推導(dǎo),如果行得通再選擇用哪一個(gè)模型??QA P3 - 04:19?
- Conv2d 6 -> 16,16個(gè)通道是怎么取前面6各通道的信息的(每個(gè)都取還是按一定組合取的)? ?QA P3 - 05:43?
- 輸出通道增多,這些增加的信息是些什么?可以理解是隨機(jī)擴(kuò)充的圖片信息么??QA P3 - 06:14?
- 卷積層輸出通道數(shù)的選擇有什么理由嗎?比如,剛才講的輸出通道數(shù)6和16.可以改成5和15嗎??QA P3 - 07:37?
- 像這些經(jīng)典的網(wǎng)絡(luò),有沒有必要把每層的參數(shù),像channels,strides,padding這些都背下來?(面試可能會問)?QA P3 - 12:15?
- 池化層一般用max還是avg,用max的話會不會損失很多信息??QA P3 - 13:49?
- LeNet當(dāng)時(shí)是用什么語言實(shí)現(xiàn)的呢?LeNet的卷積層是不是沒加bias??QA P3 - 14:32?
- 神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確率一般到多少算是比較好的??QA P3 - 16:56?
- 老師,為什么用了一層卷積,就從1個(gè)通道變成了6個(gè)通道?是每個(gè)通道用了不同的卷積核嗎??QA P3 - 19:00?
- 想請教autogloun是否能做時(shí)序任務(wù),昨天試了下表格預(yù)測模塊做時(shí)序任務(wù),結(jié)果不理想,是我沒操作對嗎??QA P3 - 19:53?
- 能介紹一下Conv2d和Conv3d以及MaxPool2d和3d的差別,以及各自適用的場景嗎??QA P3 - 21:08?
- 課程網(wǎng)站有一個(gè)練習(xí)是將sigmoid替換成relu,四個(gè)sigmoid全替換以后模型基本不收斂,有什么原因嗎?一般用relu應(yīng)該比sigmoid更容易收斂??QA P3 - 22:28?
- 圖像識別出來的特征(顏色、形狀)可以打印出來嗎,或者怎么去尋找網(wǎng)絡(luò)到底學(xué)習(xí)了什么??QA P3 - 23:30?
- 在跑得動的情況下,中間計(jì)算層的輸出通道盡量調(diào)大么??QA P3 - 26:05?
- 老師,想問一下目前的卷積神經(jīng)網(wǎng)絡(luò)或其他深度學(xué)習(xí)網(wǎng)絡(luò)是不是都需要較多的數(shù)據(jù),如果訓(xùn)練數(shù)據(jù)體量很小是否不適合用深度學(xué)習(xí)?是否有無監(jiān)督/或小訓(xùn)練集的深度學(xué)習(xí)??QA P3 - 26:41?
- 請問訓(xùn)練后的權(quán)重能做visualization進(jìn)行分析嗎??QA P3 - 27:34?
- 卷積網(wǎng)絡(luò)等網(wǎng)絡(luò)是把非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)然后來解決問題,這個(gè)想法可以通用在深度學(xué)習(xí)領(lǐng)域嗎??QA P3 - 28:20?
----end----
其它參考:
1、《動手學(xué)深度學(xué)習(xí)》,https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/lenet.html#id2
標(biāo)簽: