小伙一小时敲出python深度学习框架,AlexNet-8案例分析与实现

卷首语:对于上次详谈CNN的文章,我看到很多负面评论。哎呀我滴个小心脏,不甘心的我也请了我的老友(软件工程专业)作为读者对上一篇文章进行了评判,只见他猛地将一口老白干咽下,眼神迷离的看向远方缓缓吐出一个字“懵”……


就这表情

     于此,我也进行了及其深刻的反思,本着写文章应对读者负责,在尽量提高质量的同时,一定一定要再降低一些门槛(门槛??在作者的键盘下是不存在的!

本文范围:

     AlexNet-8案例分析与实现

阅前须知:

     本文分析方面会站在两个GPU通道的基础上进行分析讲解,代码实现采用单GPU进行模拟传播,代码中的参数并非最优,请读者适当加以思考进行改进

AlexNet:

简介:2012ImageNet图像识别大赛冠军,可以说是许多后续DCNN模型开发的参照范例


AlexNet

    如上图,我们可以看出该模型分为上下两组通道同时卷积处理。没错,AlexNet的作者利用两台GPU服务器对其进行模型训练。

模型分析:

        上图所示,本模型的深度为八层:五层卷积,三层全连接。

可能产生误解的关键词:

        通道:深度
        LRN:局部相应归一化

卷积类

(在卷积类这里,因为卷积核在两个GPU通道上的工作原理基本一样,所以我会只写一个通道的例子)

Layer-1


第一层

输入:长*宽*色深(224*224*3)
卷积:长*宽*通道*步长(11*11*96*4),这里的卷积结果被一分为二,后续将会在两个独立 的GPU上进行同步操作
激活函数:ReLU
池化:最大池化长*宽*步长(3*3*2)
备注:添加LRN
输出:长*宽*通道(27*27*96),且分为两组,每组分别为(27*27*48)

TensorFlow代码实现:

(注:实际上,图片参数为256*256*3,Paper作者将其进行了“数据增强”,随机截取224*224大小的图像进行优化训练。但在我看了很多与之相关的博文与Paper后,多数人都认为输入层应采取227*227*3的形式,可以完整的被卷积,从而免去全零填充的过程)

Layer-2


第二层

输入:长*宽*通道(27*27*48)
卷积:长*宽*通道*步长(5*5*128*1),且采用全零填充,两个GPU进行同步卷积
激活函数:ReLU
池化:最大池化长*宽*步长(3*3*2)
备注:添加LRN
输出:长*宽*通道(13*13*128)

TensorFlow代码实现:

代码

Layer-3


第三层

输入:长*宽*通道(13*13*128)
卷积:长*宽*通道*步长(3*3*192*1),且采用全零填充,两个GPU进行同步卷积,输出结 果交叉运算
激活函数:ReLU
输出:长*宽*通道(13*13*192)

TensorFlow代码实现:

(注:在当时我学习此模型时的笔记上认为此步骤主要是为了交换特征,类似于特征归类,两个GPU通道图区的特征也主要分为两类)

Layer-4

第四层

输入:长*宽*通道(13*13*192)
卷积:长*宽*通道*步长(3*3*192*1),且采用全零填充,两个GPU进行同步卷积
激活函数:ReLU
输出:长*宽*通道(13*13*192)

TensorFlow代码实现:

代码

Layer-5

第五层

输入:长*宽*通道(13*13*192)
卷积:长*宽*通道*步长(3*3*128*1),且采用全零填充,两个GPU进行同步卷积
激活函数:ReLU
池化:最大池化长*宽*步长(3*3*2)
输出:长*宽*通道(6*6*128)

代码

全连接层

Layer-6


第六层

输入:将特征矩阵拉成一维的List,且分为两组,(6*6*256)/2=4096
全连接层:shape = (4096,2048),两组GPU同步计算
激活函数:ReLU
备注:添加dropout
输出:节点*通道(2048*2)

TensorFlow代码实现:

(注:因为此模型的连接点太多,很容易造成冗余与过拟合问题,作者在此处使用抛出率为0.5的dropout,验证了其在深度神经网络中的效果)

Layer-7

第七层

输入:两组2048的节点参数
全连接层:shape = (2048,2048),两组GPU同步计算
激活函数:ReLU
备注:添加dropout
输出:节点*通道(2048*2)

TensorFlow代码实现:

代码

Layer-8

第八层

输入:两组2048的节点参数在通道上进行拼接,组成4096的节点参数
全连接层:shape = (4096,1000),则一GPU进行计算即可
备注:最后一层采用softmax
输出:经softmax后的答案,1000种

TensorFlow代码实现:

代码

卷尾语:

         至此,我们的经典模型AlexNet-8的分析就结束了,众所周知卷积网络与全连接网络相比最大的优势就是权值共享导致的参数量大幅度降低,但本模型的参数量依旧很庞大。虽然Paper的作者是使用的两个GPU进行运算的,但是我们完全可以用TensorFlow或Keras进行一个GPU甚至CPU进行模拟,当然CPU的速度要慢的很多。

         AlexNet现在大多都做为教学上的一种经典案例,辉煌的时代基本上已经过去了。不过,我们现在仍会在VGG等仍在使用的模型中看到他的影子,可以说留给后人的影响是非常巨大的。

         最后,欢迎大家在下方评论中提出一些改进性的意见或者建议,我会逐渐的完善自己的写作风格,尽量让大家都能看懂,都能学会,都能说出一句:这小子写的还蛮不赖的!

(未完待续)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容