Lenet5卷積神經網路結構

一、介紹

LeNet5是由Yann LeCun在1998年提出的,是深度學習領域中非常重要的神經網路模型。LeNet5是一個卷積神經網路模型,在當時在手寫數字識別、人臉識別等領域都有應用。該模型的成功啟發了更加複雜的卷積神經網路的設計,是卷積神經網路發展史上的重要一步。

二、LeNet5網路結構

LeNet5是由7層神經網路組成,分別是輸入層、C1層、S2層、C3層、S4層、F5層和輸出層。下面是LeNet5的網路結構圖:

輸入層是一張32*32的圖片。接下來的C1層是一個卷積層,包含6個卷積核。在C1層中,6個卷積核會對輸入圖像執行卷積運算,每個卷積核生成一個卷積特徵圖。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 5) # C1 layer
self.pool1 = nn.MaxPool2d(2, 2) # S2 layer
self.conv2 = nn.Conv2d(6, 16, 5) # C3 layer
self.pool2 = nn.MaxPool2d((2,2), (2,2)) # S4 layer
self.fc1 = nn.Linear(16*5*5, 120) # F5 layer
self.fc2 = nn.Linear(120, 84) # F6 layer
self.fc3 = nn.Linear(84, 10) # Output layer

def forward(self, x):
x = F.relu(self.conv1(x))
x = self.pool1(x)
x = F.relu(self.conv2(x))
x = self.pool2(x)
x = x.view(-1, 16*5*5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
output = self.fc3(x)
return output

net = LeNet5()
“`

三、各層功能詳解

1. 卷積核層(C1)

輸入圖片經過C1層後,會得到6個卷積特徵圖,大小為28*28,每個特徵圖的大小是後面第二個池化層S2的大小。C1層使用的卷積核大小是5*5,步長為1,padding為0,輸入通道為1,輸出通道為6,這意味著C1層使用了6個5*5*1的卷積核,每個卷積核都會對輸入圖片做一次卷積運算,將得到的結果映射到對應的卷積特徵圖中。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()
self.conv1 = nn.Conv2d(1, 6, 5) # C1 layer

“`

2. 平均池化層(S2)

在經過C1層後,接下來是平均池化層S2。該層的主要作用是降低相鄰像素間的相關性,減少參數數量,把大尺寸的特徵圖縮小為小尺寸的特徵圖。S2層的大小為14*14,每個特徵圖的大小為14*14。S2層使用的池化窗口大小為2*2,步長也為2*2。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.pool1 = nn.MaxPool2d(2, 2) # S2 layer

“`

3. 卷積核層(C3)

C3層對S2層的特徵圖再次進行卷積得到16個卷積特徵圖,C3層使用的卷積核大小是5*5,步長為1,padding為0,輸入通道為S2層的輸出6,輸出通道為16。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.conv2 = nn.Conv2d(6, 16, 5) # C3 layer

“`

4. 平均池化層(S4)

在經過C3層後,接下來是平均池化層S4。S4層的大小為5*5,每個特徵圖的大小為5*5。S4層使用的池化窗口大小為2*2,步長也為2*2。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.pool2 = nn.MaxPool2d((2,2), (2,2)) # S4 layer

“`

5. 全連接層(F5)

在S4層後面接著一個全連接層F5,對所有的神經元都進行連接,連接方式類似於經典的神經網路。F5層有120個神經元,接收來自S4層的16個5*5的卷積特徵圖。F5層的輸入是一維的,所以需要把輸入的16個特徵圖展開成一維的向量。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc1 = nn.Linear(16*5*5, 120) # F5 layer

“`

6. 全連接層(F6)

F6層有84個神經元,接收來自F5層的120個神經元信號。該層主要作用在於增強網路的非線性,提高網路的擬合能力。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc2 = nn.Linear(120, 84) # F6 layer

“`

7. 輸出層

輸出層一般是一個全連接層,每個神經元代表一個類別。

“`python
class LeNet5(nn.Module):
def __init__(self):
super(LeNet5, self).__init__()

self.fc3 = nn.Linear(84, 10) # Output layer

“`

四、LeNet5的應用

LeNet5由於其簡潔的網路結構和很好的性能,被廣泛應用在手寫數字識別等領域。隨著深度學習的發展,卷積神經網路在圖像識別、目標檢測、語音識別等領域都有很好的應用。可以看到在LeNet5的基礎上,會有更加複雜,更加深層次的卷積神經網路。

五、總結

LeNet5是在深度學習領域中具有重要意義的卷積神經網路,其在手寫數字識別等領域都有很好的應用。該網路模型結構簡潔明了,可以通過加深層數、增加節點等方式對其進行擴展,可以適用於更加複雜的圖像識別任務。

原創文章,作者:ZLES,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131755.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZLES的頭像ZLES
上一篇 2024-10-03 23:47
下一篇 2024-10-03 23:47

相關推薦

  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • Python程序的三種基本控制結構

    控制結構是編程語言中非常重要的一部分,它們指導著程序如何在不同的情況下執行相應的指令。Python作為一種高級編程語言,也擁有三種基本的控制結構:順序結構、選擇結構和循環結構。 一…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • Python實現BP神經網路預測模型

    BP神經網路在許多領域都有著廣泛的應用,如數據挖掘、預測分析等等。而Python的科學計算庫和機器學習庫也提供了很多的方法來實現BP神經網路的構建和使用,本篇文章將詳細介紹在Pyt…

    編程 2025-04-28
  • Lidar避障與AI結構光避障哪個更好?

    簡單回答:Lidar避障適用於需要高精度避障的場景,而AI結構光避障更適用於需要快速響應的場景。 一、Lidar避障 Lidar,即激光雷達,通過激光束掃描環境獲取點雲數據,從而實…

    編程 2025-04-27
  • 遺傳演算法優化神經網路ppt

    本文將從多個方面對遺傳演算法優化神經網路ppt進行詳細闡述,並給出對應的代碼示例。 一、遺傳演算法介紹 遺傳演算法(Genetic Algorithm,GA)是一種基於遺傳規律進行優化搜…

    編程 2025-04-27
  • ABCNet_v2——優秀的神經網路模型

    ABCNet_v2是一個出色的神經網路模型,它可以高效地完成許多複雜的任務,包括圖像識別、語言處理和機器翻譯等。它的性能比許多常規模型更加優越,已經被廣泛地應用於各種領域。 一、結…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Switch C:多選結構的利器

    在編寫程序時,我們經常需要根據某些條件執行不同的代碼,這時就需要使用選擇結構。在C語言中,有if語句、switch語句等多種選擇結構可供使用。其中,switch語句是一種非常強大的…

    編程 2025-04-25
  • 深入理解ANN人工神經網路

    一、什麼是ANN人工神經網路 ANN人工神經網路(Artificial Neural Network)是一種模擬人類神經網路行為和功能的數學模型。它是一個由多個神經元相互連接組成的…

    編程 2025-04-25

發表回復

登錄後才能評論