Pytorch實(shí)現(xiàn)AlexNet解決各類數(shù)據(jù)集(cifar10/mnist/imagenet)分類

AlexNet

完整代碼地址

Why AlexNet very good?

  1. 為什么Alexnet能在圖2012 ImageNet LSVRC-2012 像識(shí)別(分類) competition取得這么好的成績(jī)
  2. Alexnet的網(wǎng)絡(luò)結(jié)構(gòu)以及偷办,參數(shù)數(shù)量的計(jì)算
  3. 為了避免過(guò)擬合使用的技巧:Data Augmentation(數(shù)據(jù)增強(qiáng))凑耻,正則化Relu以及dropout,局部響應(yīng)歸一化LRN居灯。
  4. 對(duì)比了多個(gè)小的卷積核和大的卷積核的區(qū)別(前面BAT面試題)穗熬。
  5. Alexnet取得成功的原因珍剑,主要三條:
    大量數(shù)據(jù),Deep Learning領(lǐng)域應(yīng)該感謝李飛飛團(tuán)隊(duì)搞出來(lái)如此大的標(biāo)注數(shù)據(jù)集合ImageNet死陆;

GPU招拙,這種高度并行的計(jì)算神器確實(shí)助了洪荒之力,沒(méi)有神器在手措译,Alex估計(jì)不敢搞太復(fù)雜的模型别凤;

算法的改進(jìn),包括網(wǎng)絡(luò)變深领虹、數(shù)據(jù)增強(qiáng)规哪、ReLU、Dropout等塌衰。

  1. Alexnet網(wǎng)絡(luò)結(jié)構(gòu)以及參數(shù)數(shù)量的計(jì)算
    Alexnet網(wǎng)絡(luò)的大體結(jié)構(gòu)如下(論文以及一般的blog都是如下這個(gè)圖诉稍,但是看起來(lái)很不直觀):
image

下面給出兩個(gè)更好理解的結(jié)構(gòu)圖,5個(gè)卷積層+3個(gè)全連接層:

image
image

來(lái)源:stackoverflow
https://www.learnopencv.com/understanding-alexnet/

各層的參數(shù)計(jì)算如下最疆,下圖為5個(gè)卷積層的參數(shù):

image

全連接層如下:

image

可以看到:卷積層的參數(shù)明顯少于全連接層的參數(shù)杯巨。其中,網(wǎng)絡(luò)大概有62.3 million parameters努酸,其中卷積層占比約6%服爷,單占比95%的計(jì)算。

  1. 為了避免過(guò)擬合使用的技巧:Data Augmentation(數(shù)據(jù)增強(qiáng))获诈,正則化Relu以及dropout
  2. 1 Data Augmentation(數(shù)據(jù)增強(qiáng))
    數(shù)據(jù)增強(qiáng)簡(jiǎn)單的辦法如仍源,圖片翻轉(zhuǎn)Mirroring,隨機(jī)裁剪Random Crops舔涎。
image
image
  1. 2 使用ReLU非線性激活函數(shù)
    使用ReLU非線性激活函數(shù)而不選擇sigmoid或tanh函數(shù)笼踩,ReLU優(yōu)勢(shì)在于:

速度快 和sigmoid函數(shù)需要計(jì)算指數(shù)和倒數(shù)相比,relu函數(shù)其實(shí)就是一個(gè)max(0,x)亡嫌,計(jì)算代價(jià)小很多嚎于。

減輕梯度消失問(wèn)題桶至,從而可以訓(xùn)練更深的網(wǎng)絡(luò)。

稀疏性 通過(guò)對(duì)大腦的研究發(fā)現(xiàn)匾旭,大腦在工作的時(shí)候只有大約5%的神經(jīng)元是激活的,而采用sigmoid激活函數(shù)的人工神經(jīng)網(wǎng)絡(luò)圃郊,其激活率大約是50%价涝。有論文聲稱人工神經(jīng)網(wǎng)絡(luò)在15%-30%的激活率時(shí)是比較理想的。因?yàn)閞elu函數(shù)在輸入小于0時(shí)是完全不激活的持舆,因此可以獲得一個(gè)更低的激活率.

  1. 3 使用Dropout(只在最后幾個(gè)全連接層做)
image
image

為什么Dropout有效色瘩?

Dropout背后理念和集成模型很相似。在Drpout層逸寓,不同的神經(jīng)元組合被關(guān)閉居兆,這代表了一種不同的結(jié)構(gòu),所有這些不同的結(jié)構(gòu)使用一個(gè)的子數(shù)據(jù)集并行地帶權(quán)重訓(xùn)練竹伸,而權(quán)重總和為1泥栖。如果Dropout層有 n 個(gè)神經(jīng)元,那么會(huì)形成 2^{n} 個(gè)不同的子結(jié)構(gòu)勋篓。在預(yù)測(cè)時(shí)吧享,相當(dāng)于集成這些模型并取均值。這種結(jié)構(gòu)化的模型正則化技術(shù)有利于避免過(guò)擬合譬嚣。Dropout有效的另外一個(gè)視點(diǎn)是:由于神經(jīng)元是隨機(jī)選擇的钢颂,所以可以減少神經(jīng)元之間的相互依賴,從而確保提取出相互獨(dú)立的重要特征拜银。

  1. 4 局部響應(yīng)歸一化LRN(Local Response Normalization)
    提出了LRN層殊鞭,對(duì)局部神經(jīng)元的活動(dòng)創(chuàng)建競(jìng)爭(zhēng)機(jī)制,使得其中響應(yīng)比較大的值變得相對(duì)更大尼桶,并抑制其他反饋較小的神經(jīng)元操灿,增強(qiáng)了模型的泛化能力。
image

補(bǔ)充
2個(gè)33的卷積層和一個(gè)55卷積層的區(qū)別泵督?(某BAT的一個(gè)面試題牲尺,也可以理解為多個(gè)小的卷積層和一個(gè)大的卷積層的區(qū)別),問(wèn)題來(lái)源:stackoverflow幌蚊,VGG中給出了答案谤碳,如下:

多個(gè)卷積層可以增加網(wǎng)絡(luò)的深度,從而學(xué)習(xí)更復(fù)雜的特征
2個(gè)33的卷積層的參數(shù)少于一個(gè)55卷積層的參數(shù)

code:


class AlexNet(nn.Module):

    def __init__(self,  num_classes=1000):
        super().__init__()

        self.features = nn.Sequential(
            nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(64, 192, kernel_size=5, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(192, 384, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(256, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
        )
        self.avgpool = nn.AdaptiveAvgPool2d((6, 6))
        self.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, num_classes),
        )

    def forward(self, x):
        x = self.features(x)
        x = self.avgpool(x)
        x = torch.flatten(x, 1)
        x = self.classifier(x)
        return x

文章引用于 FishBear_move_on
編輯 Lornatang
校準(zhǔn) Lornatang

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末溢豆,一起剝皮案震驚了整個(gè)濱河市蜒简,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漩仙,老刑警劉巖搓茬,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犹赖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卷仑,警方通過(guò)查閱死者的電腦和手機(jī)峻村,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锡凝,“玉大人粘昨,你說(shuō)我怎么就攤上這事〈芫猓” “怎么了张肾?”我有些...
    開(kāi)封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锚扎。 經(jīng)常有香客問(wèn)我吞瞪,道長(zhǎng),這世上最難降的妖魔是什么驾孔? 我笑而不...
    開(kāi)封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任芍秆,我火速辦了婚禮,結(jié)果婚禮上翠勉,老公的妹妹穿的比我還像新娘浪听。我一直安慰自己,他們只是感情好眉菱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布迹栓。 她就那樣靜靜地躺著,像睡著了一般俭缓。 火紅的嫁衣襯著肌膚如雪克伊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天华坦,我揣著相機(jī)與錄音愿吹,去河邊找鬼。 笑死惜姐,一個(gè)胖子當(dāng)著我的面吹牛犁跪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播歹袁,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坷衍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了条舔?” 一聲冷哼從身側(cè)響起枫耳,我...
    開(kāi)封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孟抗,沒(méi)想到半個(gè)月后迁杨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钻心,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年铅协,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捷沸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狐史,死狀恐怖痒给,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情预皇,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布婉刀,位于F島的核電站吟温,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏突颊。R本人自食惡果不足惜鲁豪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望律秃。 院中可真熱鬧爬橡,春花似錦、人聲如沸棒动。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)船惨。三九已至柜裸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粱锐,已是汗流浹背疙挺。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怜浅,地道東北人铐然。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恶座,于是被迫代替她去往敵國(guó)和親搀暑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354