精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【連載】深度學習筆記14:CNN經典論文研讀之Le-Net5及其Tensorflow實現

人工智能實訓營 ? 2019-01-14 09:26 ? 次閱讀

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

LeNet-5 網絡結構

該篇論文有 42 頁,但關于 LeNet-5 網絡的核心部分并沒有那么多,我們直接定位第二章的B 小節進行閱讀。LeNet-5 的網絡結構如下:


LeNet-5 共有 7 層,輸入層不計入層數,每層都有一定的訓練參數,其中三個卷積層的訓練參數較多,每層都有多個濾波器,也叫特征圖,每個濾波器都對上一層的輸出提取不同的像素特征。所以 LeNet-5 的簡略結構如下:

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

各層的結構和參數如下:
C1層是個卷積層,其輸入輸出結構如下:
輸入: 32 x 32 x 1 濾波器大小: 5 x 5 x 1 濾波器個數:6
輸出: 28 x 28 x 6
參數個數: 5 x 5 x 1 x 6 + 6 = 156

P2層是個池化層,其輸入輸出結構如下:
輸入: 28 x 28 x 6 濾波器大小: 2 x 2 濾波器個數:6
輸出: 14 x 14 x 6
參數個數:2 x 6 = 12
在原文中,P1池化層采用的是平均池化,鑒于現在普遍都使用最大池化,所以在后面的代碼實現中我們統一采用最大池化。

C3層是個卷積層,其輸入輸出結構如下:
輸入: 14 x 14 x 6 濾波器大小: 5 x 5 x 6 濾波器個數:16
輸出: 10 x 10 x 16
參數個數: 5 x 5 x 6 x 16 + 16 = 2416
640?wx_fmt=png
P2 池化之后的特征圖組合計算得到C3的濾波器個數。

P4層是個池化層,其輸入輸出結構如下:
輸入: 10 x 10 x 16 濾波器大小: 2 x 2 濾波器個數:16
輸出: 5 x 5 x 16
參數個數: 2 x 16 = 32

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

F6層是個全連接層,全連接的激活函數采用的是 tanh 函數,其輸入輸出結構如下:
輸入:120
輸出:84
參數個數:120 x 84 + 84 = 10164

F7層即輸出層,也是個全連接層,其輸入輸出結構如下:
輸入:84
輸出:10
參數個數: 84 x 10 + 10 = 850

LeNet-5 的 Tensorflow 實現

我們前面關于如何使用 Tensorflow 搭建卷積神經網絡的過程可以定下實現 LeNet-5 的基本思路。如果在 python 中寫的時候我們需要定義創建輸入輸出的占位符變量模塊、初始化各層參數模塊、創建前向傳播模塊、定義模型優化迭代模型,以及在最后設置輸入數據。

下面筆者用以上思路編寫一個 LeNet-5 的簡單實現代碼。
導入相關庫和創建輸入輸出的占位符變量:

importtensorflowastf
importnumpyasnp
fromtensorflow.examples.tutorials.mnistimportinput_data
defcreate_placeholder():
X=tf.placeholder(tf.float32,shape=(None,28*28))
Y=tf.placeholder(tf.float32,shape=(None,10))
keep_prob=tf.placeholder(tf.float32)
returnX,Y,keep_prob


初始化各層參數:

definitialize_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}
returnpara


創建 LeNet-5 的前向計算:

defforward_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)
returnf7


創建模型優化計算函數:

640?wx_fmt=png


最后傳入 mnist 數據和相關超參數:

640?wx_fmt=png

本文來自《自興人工智能》項目部:凱文


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1791

    文章

    46860

    瀏覽量

    237585
  • 機器學習
    +關注

    關注

    66

    文章

    8378

    瀏覽量

    132411
  • 深度學習
    +關注

    關注

    73

    文章

    5493

    瀏覽量

    120979
收藏 人收藏

    評論

    相關推薦

    FPGA加速深度學習模型的案例

    :DE5Net_Conv_Accelerator 應用場景 :面向深度學習的開源項目,實現了AlexNet的第一層卷積運算加速。 技術特點 : 采用了Verilog語言進行編程,與P
    的頭像 發表于 10-25 09:22 ?145次閱讀

    如何在Tensorflow實現反卷積

    TensorFlow實現反卷積(也稱為轉置卷積或分數步長卷積)是一個涉及多個概念和步驟的過程。反卷積在深度學習領域,特別是在圖像分割、圖像超分辨率、以及生成模型(如生成對抗網絡GA
    的頭像 發表于 07-14 10:46 ?543次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發的一個開源深度學習框架,它允許開發者方便地構建、訓練和部署各種復雜的機器學習模型。TensorFlow
    的頭像 發表于 07-12 16:38 ?582次閱讀

    CNN與RNN的關系?

    深度學習的廣闊領域中,卷積神經網絡(CNN)和循環神經網絡(RNN)是兩種極為重要且各具特色的神經網絡模型。它們各自在圖像處理、自然語言處理等領域展現出卓越的性能。本文將從概念、原理、應用場景及代碼示例等方面詳細探討
    的頭像 發表于 07-08 16:56 ?613次閱讀

    CNN在多個領域中的應用

    ,通過多層次的非線性變換,能夠捕捉到數據中的隱藏特征;而卷積神經網絡(CNN),作為神經網絡的一種特殊形式,更是在圖像識別、視頻處理等領域展現出了卓越的性能。本文旨在深入探究深度學習、神經網絡與卷積神經網絡的基本原理、結構特點
    的頭像 發表于 07-08 10:44 ?961次閱讀

    CNN的定義和優勢

    卷積神經網絡(Convolutional Neural Networks, CNN)作為深度學習領域的核心成員,不僅在學術界引起了廣泛關注,更在工業界尤其是計算機視覺領域展現出了巨大的應用價值。關于
    的頭像 發表于 07-05 17:37 ?4157次閱讀

    keras模型轉tensorflow session

    和訓練深度學習模型。Keras是基于TensorFlow、Theano或CNTK等底層計算框架構建的。TensorFlow是一個開源的機器學習
    的頭像 發表于 07-05 09:36 ?462次閱讀

    如何在TensorFlow中構建并訓練CNN模型

    TensorFlow中構建并訓練一個卷積神經網絡(CNN)模型是一個涉及多個步驟的過程,包括數據預處理、模型設計、編譯、訓練以及評估。下面,我將詳細闡述這些步驟,并附上一個完整的代碼示例。
    的頭像 發表于 07-04 11:47 ?761次閱讀

    如何利用CNN實現圖像識別

    卷積神經網絡(CNN)是深度學習領域中一種特別適用于圖像識別任務的神經網絡結構。它通過模擬人類視覺系統的處理方式,利用卷積、池化等操作,自動提取圖像中的特征,進而實現高效的圖像識別。本
    的頭像 發表于 07-03 16:16 ?1131次閱讀

    cnn卷積神經網絡分類有哪些

    卷積神經網絡概述 卷積神經網絡(Convolutional Neural Network,簡稱CNN)是一種深度學習模型,由多層卷積層和池化層堆疊而成。CNN通過卷積操作提取圖像特征
    的頭像 發表于 07-03 09:28 ?469次閱讀

    深度學習與卷積神經網絡的應用

    到自然語言處理,深度學習CNN正逐步改變著我們的生活方式。本文將深入探討深度學習與卷積神經網絡的基本概念、工作原理
    的頭像 發表于 07-02 18:19 ?810次閱讀

    TensorFlow與PyTorch深度學習框架的比較與選擇

    深度學習作為人工智能領域的一個重要分支,在過去十年中取得了顯著的進展。在構建和訓練深度學習模型的過程中,深度
    的頭像 發表于 07-02 14:04 ?888次閱讀

    深度神經網絡模型cnn的基本概念、結構及原理

    ,其核心是構建具有多層結構的神經網絡模型,以實現對復雜數據的高效表示和處理。在眾多深度學習模型中,卷積神經網絡(CNN)因其在圖像識別等領域的卓越性能而備受關注。
    的頭像 發表于 07-02 10:11 ?9552次閱讀

    基于Python和深度學習CNN原理詳解

    卷積神經網絡 (CNN) 由各種類型的層組成,這些層協同工作以從輸入數據中學習分層表示。每個層在整體架構中都發揮著獨特的作用。
    的頭像 發表于 04-06 05:51 ?1972次閱讀
    基于Python和<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的<b class='flag-5'>CNN</b>原理詳解

    如何使用TensorFlow構建機器學習模型

    在這篇文章中,我將逐步講解如何使用 TensorFlow 創建一個簡單的機器學習模型。
    的頭像 發表于 01-08 09:25 ?915次閱讀
    如何使用<b class='flag-5'>TensorFlow</b>構建機器<b class='flag-5'>學習</b>模型