0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CNN經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu)之Le-Net5

lviY_AI_shequ ? 來源:未知 ? 作者:李倩 ? 2018-11-23 16:40 ? 次閱讀

在前幾次筆記中,筆者基本上將卷積神經(jīng)網(wǎng)絡(luò)的基本原理給講完了。從本次筆記開始,筆者在深度學(xué)習(xí)筆記中會(huì)不定期的對(duì) CNN 發(fā)展過程中的經(jīng)典論文進(jìn)行研讀并推送研讀筆記。今天筆者就和大家一起學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)發(fā)展歷史上具有奠基性的經(jīng)典論文之一的關(guān)于 LeNet-5 網(wǎng)絡(luò)一文。LeNet-5 是由具有卷積神經(jīng)網(wǎng)絡(luò)之父之美譽(yù)的 Yann LeCun 在1998年發(fā)表在 IEEE 上面的一篇 Gradient-based learning applied to document recognition 上提出來的,所以直接由 LeCun 大佬名字命名了。論文原文:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

LeNet-5 網(wǎng)絡(luò)結(jié)構(gòu)

該篇論文有 42 頁(yè),但關(guān)于 LeNet-5 網(wǎng)絡(luò)的核心部分并沒有那么多,我們直接定位第二章的B 小節(jié)進(jìn)行閱讀。LeNet-5 的網(wǎng)絡(luò)結(jié)構(gòu)如下:

LeNet-5 共有 7 層,輸入層不計(jì)入層數(shù),每層都有一定的訓(xùn)練參數(shù),其中三個(gè)卷積層的訓(xùn)練參數(shù)較多,每層都有多個(gè)濾波器,也叫特征圖,每個(gè)濾波器都對(duì)上一層的輸出提取不同的像素特征。所以 LeNet-5 的簡(jiǎn)略結(jié)構(gòu)如下:

輸入-卷積-池化-卷積-池化-卷積(全連接)-全連接-全連接(輸出)

各層的結(jié)構(gòu)和參數(shù)如下:C1層是個(gè)卷積層,其輸入輸出結(jié)構(gòu)如下:輸入: 32 x 32 x 1 濾波器大小: 5 x 5 x 1 濾波器個(gè)數(shù):6輸出: 28 x 28 x 6參數(shù)個(gè)數(shù): 5 x 5 x 1 x 6 + 6 = 156

P2層是個(gè)池化層,其輸入輸出結(jié)構(gòu)如下:輸入: 28 x 28 x 6 濾波器大?。?2 x 2 濾波器個(gè)數(shù):6輸出: 14 x 14 x 6參數(shù)個(gè)數(shù):2 x 6 = 12在原文中,P1池化層采用的是平均池化,鑒于現(xiàn)在普遍都使用最大池化,所以在后面的代碼實(shí)現(xiàn)中我們統(tǒng)一采用最大池化。

C3層是個(gè)卷積層,其輸入輸出結(jié)構(gòu)如下:輸入: 14 x 14 x 6 濾波器大?。?5 x 5 x 6 濾波器個(gè)數(shù):16輸出: 10 x 10 x 16參數(shù)個(gè)數(shù): 5 x 5 x 6 x 16 + 16 = 2416

P2 池化之后的特征圖組合計(jì)算得到C3的濾波器個(gè)數(shù)。

P4層是個(gè)池化層,其輸入輸出結(jié)構(gòu)如下:輸入: 10 x 10 x 16 濾波器大?。?2 x 2 濾波器個(gè)數(shù):16輸出: 5 x 5 x 16參數(shù)個(gè)數(shù): 2 x 16 = 32

C5層在論文中是個(gè)卷積層,但濾波器大小為 5 x 5,所以其本質(zhì)上也是個(gè)全連接層。如果將5 x 5 x 16 拉成一個(gè)向量,它就是一個(gè)全連接層。其輸入輸出結(jié)構(gòu)如下:輸入: 5 x 5 x 16 濾波器大?。?5 x 5 x 16 濾波器個(gè)數(shù):120輸出: 1 x 1 x 120參數(shù)個(gè)數(shù): 5 x 5 x 16 x 120 + 120 = 48120

F6層是個(gè)全連接層,全連接的激活函數(shù)采用的是tanh函數(shù),其輸入輸出結(jié)構(gòu)如下:輸入:120輸出:84參數(shù)個(gè)數(shù):120 x 84 + 84 = 10164

F7層即輸出層,也是個(gè)全連接層,其輸入輸出結(jié)構(gòu)如下:輸入:84輸出:10參數(shù)個(gè)數(shù): 84 x 10 + 10 = 850

LeNet-5 的Tensorflow實(shí)現(xiàn)

我們前面關(guān)于如何使用Tensorflow搭建卷積神經(jīng)網(wǎng)絡(luò)的過程可以定下實(shí)現(xiàn) LeNet-5 的基本思路。如果在python中寫的時(shí)候我們需要定義創(chuàng)建輸入輸出的占位符變量模塊、初始化各層參數(shù)模塊、創(chuàng)建前向傳播模塊、定義模型優(yōu)化迭代模型,以及在最后設(shè)置輸入數(shù)據(jù)。

下面筆者用以上思路編寫一個(gè) LeNet-5 的簡(jiǎn)單實(shí)現(xiàn)代碼。 導(dǎo)入相關(guān)庫(kù)和創(chuàng)建輸入輸出的占位符變量:

import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import input_datadef create_placeholder(): X = tf.placeholder(tf.float32, shape=(None, 28 * 28)) Y = tf.placeholder(tf.float32, shape=(None, 10)) keep_prob = tf.placeholder(tf.float32) return X, Y, keep_prob

初始化各層參數(shù):

def initialize_parameters(): W1 = tf.get_variable('W1', [5,5,1,6], initializer=tf.contrib.layers.xavier_initializer()) b1 = tf.get_variable('b1', [6], initializer=tf.zeros_initializer()) W2 = tf.get_variable('W2', [5,5,6,16], initializer=tf.contrib.layers.xavier_initializer()) b2 = tf.get_variable('b2', [16], initializer=tf.zeros_initializer()) W3 = tf.get_variable('W3', [5, 5, 16, 120], initializer=tf.contrib.layers.xavier_initializer()) b3 = tf.get_variable('b3', [120], initializer=tf.zeros_initializer()) W4 = tf.get_variable('W4', [120, 84], initializer=tf.contrib.layers.xavier_initializer()) b4 = tf.get_variable('b4', [84], initializer=tf.zeros_initializer()) W5 = tf.get_variable('W5', [84, 10], initializer=tf.contrib.layers.xavier_initializer()) b5 = tf.get_variable('b5', [10], initializer=tf.zeros_initializer()) para = {'W1': W1, 'b1': b1, 'W2': W2, 'b2': b2, 'W3': W3, 'b3': b3, 'W4': W4, 'b4': b4, 'W5': W5, 'b5': b5} return para

創(chuàng)建 LeNet-5 的前向計(jì)算:

def forward_propagation(X, para, dropout): X = tf.reshape(X, [-1, 28, 28, 1]) X = tf.pad(X, [[0,0],[2,2],[2,2], [0,0]]) c1 = tf.nn.conv2d(X, para['W1'], strides=[1, 1, 1, 1], padding='VALID') + para['b1'] p2 = tf.nn.max_pool(c1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID') c3 = tf.nn.conv2d(p2, para['W2'], strides=[1, 1, 1, 1], padding='VALID') + para['b2'] p4 = tf.nn.max_pool(c3, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID') c5 = tf.nn.conv2d(p4, para['W3'], strides=[1, 1, 1, 1], padding='VALID') + para['b3'] c5 = tf.contrib.layers.flatten(c5) f6 = tf.nn.tanh(tf.add(tf.matmul(c5, para['W4']), para['b4'])) f7 = tf.nn.tanh(tf.add(tf.matmul(f6, para['W5']), para['b5'])) f7 = tf.nn.dropout(f7, dropout) return f7

創(chuàng)建模型優(yōu)化計(jì)算函數(shù):

最后傳入 mnist 數(shù)據(jù)和相關(guān)超參數(shù):

注:本深度學(xué)習(xí)筆記系作者學(xué)習(xí) Andrew NG 的 deeplearningai 五門課程所記筆記,其中代碼為每門課的課后assignments作業(yè)整理而成。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4733

    瀏覽量

    100420
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5463

    瀏覽量

    120891
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    350

    瀏覽量

    22132

原文標(biāo)題:深度學(xué)習(xí)筆記14:CNN經(jīng)典論文研讀之Le-Net5及其Tensorflow實(shí)現(xiàn)

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深度學(xué)習(xí)與圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)分享:CNN經(jīng)典網(wǎng)絡(luò)-ResNet

    深度學(xué)習(xí)與圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)分享:CNN 經(jīng)典網(wǎng)絡(luò)-ResNet resnet 又叫深度殘差網(wǎng)絡(luò)
    的頭像 發(fā)表于 10-12 09:54 ?982次閱讀
    深度學(xué)習(xí)與圖神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>學(xué)習(xí)分享:<b class='flag-5'>CNN</b><b class='flag-5'>經(jīng)典</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>之</b>-ResNet

    直流電源EMI濾波器的設(shè)計(jì)原則、網(wǎng)絡(luò)結(jié)構(gòu)、參數(shù)選擇

    的設(shè)計(jì)原則、網(wǎng)絡(luò)結(jié)構(gòu)、參數(shù)選擇<br/>1設(shè)計(jì)原則——滿足最大阻抗失配插入損耗要盡可能增大,即盡可能增大信號(hào)的反射。設(shè)電源的輸出阻抗和與端接的濾波器的輸人阻抗分別為ZO
    發(fā)表于 10-10 13:07

    TFCNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事詳細(xì)攻略

    TFCNN:Tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN的嘻嘻哈哈事詳細(xì)攻略
    發(fā)表于 12-19 17:03

    linux不同網(wǎng)絡(luò)結(jié)構(gòu)的不同IP設(shè)法

    Linux的裝系統(tǒng)設(shè)IP,這應(yīng)該是系統(tǒng)管理員的基本功,可是不同的網(wǎng)絡(luò)結(jié)構(gòu)有不同的IP設(shè)法,您知道嗎?
    發(fā)表于 07-05 06:52

    神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索有什么優(yōu)勢(shì)?

    ,稍有不同就無法復(fù)現(xiàn)論文的結(jié)果。而網(wǎng)絡(luò)結(jié)構(gòu)作為一種特殊的超參數(shù),在深度學(xué)習(xí)整個(gè)環(huán)節(jié)中扮演著舉足輕重的角色。在圖像分類任務(wù)上大放異彩的ResNet、在機(jī)器翻譯任務(wù)上稱霸的Transformer等網(wǎng)絡(luò)結(jié)構(gòu)
    發(fā)表于 09-11 11:52

    手繪網(wǎng)絡(luò)結(jié)構(gòu)

    手繪一些網(wǎng)絡(luò)結(jié)構(gòu)圖,很初級(jí)
    發(fā)表于 10-25 14:06

    網(wǎng)絡(luò)結(jié)構(gòu)與IP分組交換技術(shù)

    《計(jì)算機(jī)體系結(jié)構(gòu)網(wǎng)絡(luò)篇1、2》 網(wǎng)絡(luò)結(jié)構(gòu)、IP分組交換技術(shù)、IP/MAC映射、NAT轉(zhuǎn)換等...
    發(fā)表于 12-23 06:05

    TD-SCDMA網(wǎng)絡(luò)結(jié)構(gòu)

    TD-SCDMA 系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)完全遵循3GPP 指定的UMTS 網(wǎng)絡(luò)結(jié)構(gòu),可以分為接入網(wǎng)(UTRAN)和核心網(wǎng)(CN)。本章首先介紹UMTS 的物理網(wǎng)絡(luò)結(jié)構(gòu)模型,根據(jù)TD-SCDMA 系統(tǒng)的接入網(wǎng)和核心網(wǎng)組成闡述
    發(fā)表于 06-19 14:10 ?217次下載

    DeviceNet 網(wǎng)絡(luò)結(jié)構(gòu)

    DeviceNet 網(wǎng)絡(luò)結(jié)構(gòu) 基于現(xiàn)場(chǎng)總線的開放的自動(dòng)化系統(tǒng)底層結(jié)構(gòu)近年來發(fā)展起來的現(xiàn)場(chǎng)總線技術(shù)以其靈活的控制方式信息共享和低成本等特點(diǎn)被廣泛的用于復(fù)的
    發(fā)表于 03-22 15:46 ?30次下載

    環(huán)形網(wǎng)絡(luò),環(huán)形網(wǎng)絡(luò)結(jié)構(gòu)是什么?

    環(huán)形網(wǎng)絡(luò),環(huán)形網(wǎng)絡(luò)結(jié)構(gòu)是什么? 這種結(jié)構(gòu)網(wǎng)絡(luò)形式主要應(yīng)用于令牌網(wǎng)中,在這種網(wǎng)絡(luò)結(jié)構(gòu)中各設(shè)備是直接通過電纜來串接的,最后形成一個(gè)閉環(huán),
    發(fā)表于 03-22 11:14 ?6142次閱讀

    NLP中CNN模型常見的Pooling操作方法及其典型網(wǎng)絡(luò)結(jié)構(gòu)

    CNN是目前自然語(yǔ)言處理中和RNN并駕齊驅(qū)的兩種最常見的深度學(xué)習(xí)模型。圖1展示了在NLP任務(wù)中使用CNN模型的典型網(wǎng)絡(luò)結(jié)構(gòu)。一般而言,輸入的字或者詞用Word Embedding的方式表達(dá),這樣
    發(fā)表于 11-15 17:59 ?1.5w次閱讀
    NLP中<b class='flag-5'>CNN</b>模型常見的Pooling操作方法及其典型<b class='flag-5'>網(wǎng)絡(luò)結(jié)構(gòu)</b>

    【連載】深度學(xué)習(xí)筆記14:CNN經(jīng)典論文研讀Le-Net5及其Tensorflow實(shí)現(xiàn)

    卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)發(fā)展歷史上具有奠基性的經(jīng)典論文之一的關(guān)于 LeNet-5 網(wǎng)絡(luò)一文。LeNet-5 是由具有卷積神經(jīng)
    的頭像 發(fā)表于 01-14 09:26 ?1748次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

    卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是一種前饋神經(jīng)網(wǎng)絡(luò),常用于圖像處理、自然語(yǔ)言處理等領(lǐng)域中。它是一種深度學(xué)習(xí)(Deep
    的頭像 發(fā)表于 08-17 16:30 ?1177次閱讀

    cnn卷積神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 cnn卷積神經(jīng)網(wǎng)絡(luò)代碼

    以解決圖像識(shí)別問題為主要目標(biāo),但它的應(yīng)用已經(jīng)滲透到了各種領(lǐng)域,從自然語(yǔ)言處理、語(yǔ)音識(shí)別、到物體標(biāo)記以及醫(yī)療影像分析等。在此,本文將對(duì)CNN的原理、結(jié)構(gòu)以及基礎(chǔ)代碼進(jìn)行講解。 1. CNN的原理
    的頭像 發(fā)表于 08-21 17:16 ?2605次閱讀

    如何優(yōu)化PLC的網(wǎng)絡(luò)結(jié)構(gòu)?

    優(yōu)化PLC的網(wǎng)絡(luò)結(jié)構(gòu)可以提高通信的效率和穩(wěn)定性。以下是一些優(yōu)化PLC網(wǎng)絡(luò)結(jié)構(gòu)的方法: (1)設(shè)計(jì)合理的拓?fù)?b class='flag-5'>結(jié)構(gòu):根據(jù)應(yīng)用需求和設(shè)備分布情況,設(shè)計(jì)合理的網(wǎng)絡(luò)拓?fù)?/div>
    的頭像 發(fā)表于 12-23 08:15 ?653次閱讀
    如何優(yōu)化PLC的<b class='flag-5'>網(wǎng)絡(luò)結(jié)構(gòu)</b>?