无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

DL:卷積神經網絡的基本原理與 PyTorch 實現

0
分享至

卷積神經網絡(Convolutional Neural Network,CNN)是深度學習中最重要的模型結構之一,尤其適合處理圖像、視頻等具有空間結構的數據。與普通(MLP)直接把輸入展開為一維向量不同,卷積神經網絡會盡量保留圖像中的局部鄰域關系,通過卷積核在圖像上滑動,自動學習邊緣、紋理、形狀等層級特征。

MLP 可以通過多層“線性變換 + 非線性激活”學習復雜非線性關系。但是,如果直接用 MLP 處理圖像,通常需要把二維圖像展開成一維向量,這會削弱圖像原有的空間結構信息。


圖 1:從 MLP 到卷積神經網絡

卷積神經網絡正是為了解決這類問題而發展起來的。它通過局部連接、權重共享、特征圖、池化等機制,使模型能夠更有效地從圖像中提取空間特征,并逐層形成從低級視覺特征到高級語義特征的表示。

一、為什么需要卷積神經網絡

圖像數據與普通表格數據不同。

在表格數據中,每一列通常表示一個明確特征,例如面積、樓齡、收入、消費次數等。而在圖像中,每個像素本身并不總是具有獨立語義。一個像素是否重要,往往取決于它周圍像素的排列關系。

例如,在一張手寫數字圖片中:

? 相鄰像素共同形成筆畫

? 筆畫組合形成局部結構

? 局部結構進一步組合成數字整體

? 數字類別取決于這些空間結構的整體模式

如果把圖像直接展平成一維向量,再交給 MLP 處理,模型雖然仍然可以訓練,但會遇到幾個問題。

第一,空間結構被削弱。

原本相鄰的像素在展平后可能相距很遠,模型不容易直接利用局部鄰域關系。

第二,參數數量可能過大。

如果一張圖像大小為 224 × 224 × 3,展平后就是 150528 個輸入值。若直接連接到一個有 1000 個神經元的隱藏層,僅第一層就會產生大量參數。

第三,模型難以自動利用平移不變性。

圖像中的同一個邊緣、紋理或局部形狀,可能出現在不同位置。普通全連接網絡需要在不同位置重復學習類似特征。

卷積神經網絡的基本思想是:用較小的卷積核在圖像上滑動,在不同位置重復檢測相同局部模式。

這樣做帶來兩個重要好處:

? 局部連接:每個神經元只關注局部區域

? 權重共享:同一個卷積核在整張圖像上重復使用

因此,CNN 比普通 MLP 更適合處理圖像這類具有空間結構的數據。

二、卷積運算的基本思想

卷積神經網絡的核心操作是(Convolution)。在圖像處理中,可以把卷積理解為:用一個小矩陣在圖像上滑動,并對局部區域進行加權求和。

這個小矩陣通常稱為卷積核(Kernel)或濾波器(Filter)。


圖 2:卷積核在圖像上滑動并生成特征圖

假設輸入圖像是一個二維矩陣,卷積核也是一個較小的二維矩陣。卷積核每次覆蓋圖像中的一個局部區域,然后把對應位置相乘并求和,得到輸出特征圖中的一個數值。

對于二維輸入,簡化的卷積計算可以寫為:

其中:

? X 表示輸入圖像或輸入特征圖

? K 表示卷積核

? S(i,j) 表示輸出特征圖在位置 (i,j) 的值

? m、n 表示卷積核內部的位置索引

? ∑ 表示對局部區域內的元素求和

從直觀角度看,卷積核像一個“局部模式檢測器”。

不同卷積核可以學習不同視覺模式:

? 有的卷積核可能檢測水平邊緣

? 有的卷積核可能檢測垂直邊緣

? 有的卷積核可能檢測斜線紋理

? 更深層的卷積核可能檢測局部形狀或物體部件

在 PyTorch 中,torch.nn.Conv2d 用于對由多個輸入平面組成的輸入信號執行二維卷積,常用于圖像特征提取。

三、卷積層的關鍵概念

理解 CNN,需要掌握幾個核心概念:卷積核、步幅、填充、通道和特征圖。


圖 3:卷積層中的卷積核、通道與特征圖

1、卷積核:局部特征檢測器

是一個可學習的小矩陣。訓練開始時,卷積核中的數值通常是隨機初始化的;訓練過程中,模型會通過反向傳播不斷調整這些數值,使卷積核逐漸學會對任務有用的局部模式。

例如,一個 3 × 3 卷積核可以寫成:

其中:

? K 表示卷積核

? k??、k??、…、k?? 表示卷積核中的可學習參數

? 3 × 3 表示卷積核覆蓋的局部區域大小

卷積核越大,每次看到的局部區域越大;卷積核越小,計算更輕量,也更容易堆疊成深層結構。

在現代 CNN 中,3 × 3 卷積非常常見,因為它既能捕捉局部結構,又具有較好的計算效率。

2、步幅:卷積核每次移動的距離

步幅(Stride)表示卷積核每次滑動的距離。

如果 stride = 1,卷積核每次移動 1 個像素;如果 stride = 2,卷積核每次移動 2 個像素。

步幅越大,輸出特征圖的尺寸通常越小。

可以簡單理解為:

? 小步幅:保留更多空間細節

? 大步幅:更快降低特征圖尺寸

3、填充:控制邊緣信息與輸出尺寸

填充(Padding)是在輸入圖像邊緣補充額外像素,常見做法是在邊緣補 0。

填充的作用主要有兩個:

? 讓卷積核能夠覆蓋圖像邊緣區域

? 控制輸出特征圖的空間尺寸

如果沒有填充,卷積核在滑動時無法完全覆蓋邊緣像素,輸出尺寸會逐層變小。適當填充可以緩解這一問題。

4、通道:從灰度圖到彩色圖

圖像通常具有通道(Channel)。

例如:

? 灰度圖通常有 1 個通道

? 彩色 RGB 圖像通常有 3 個通道

? 卷積層輸出的特征圖也可以有多個通道

在 CNN 中,每個輸出通道通常對應一個卷積核學習到的一類特征。多個卷積核會生成多個輸出通道,也就是多張特征圖。

例如,一個卷積層可以把輸入從 3 個通道變成 32 個通道:

nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)

其中:

? in_channels=3 表示輸入有 3 個通道

? out_channels=32 表示輸出 32 個特征通道

? kernel_size=3 表示使用 3 × 3 卷積核

在 PyTorch 中,二維卷積層的輸入通常具有形狀 N、C、H、W,分別表示批量大小、通道數、高度和寬度;Conv2d 的 in_channels 和 out_channels 用來指定輸入與輸出通道數量。

5、特征圖:卷積層的輸出

卷積層的輸出稱為特征圖(Feature Map)。一張特征圖可以理解為某個卷積核在圖像不同位置上的響應強度。

如果某個位置與卷積核學習到的模式相似,響應值通常較高;如果不相似,響應值可能較低。

從直觀角度看,特征圖回答的是:某種局部模式在圖像的哪些位置出現得比較明顯?

隨著網絡層數加深,特征圖表達的內容也會逐漸抽象:

→ 類別相關語義

四、池化層與空間尺寸壓縮

卷積層負責提取局部特征,但如果一直保留完整空間尺寸,計算量會很大,而且模型可能過度關注細節位置。

(Pooling Layer)用于降低特征圖的空間尺寸,同時保留主要響應信息。

最常見的是最大池化(Max Pooling)。它在局部區域中取最大值,例如在 2 × 2 區域中選出最大響應。


圖 4:最大池化如何壓縮特征圖尺寸

最大池化可以寫為:

其中:

? X 表示輸入特征圖

? Y(i,j) 表示池化后在位置 (i,j) 的值

? R(i,j) 表示當前位置對應的局部區域

? max 表示取最大值

從直觀角度看,最大池化保留的是局部區域中最明顯的特征響應。

池化層的作用包括:

? 降低特征圖尺寸

? 減少計算量

? 增強一定程度的位置魯棒性

? 保留局部區域中最顯著的特征

例如,一個 2 × 2 最大池化層通常會把特征圖的高和寬約縮小一半。

在 PyTorch 中,torch.nn.MaxPool2d 用于對由多個輸入平面組成的輸入信號執行二維最大池化,輸入形狀通常也按 N、C、H、W 組織。

需要注意的是,池化并不是 CNN 中唯一的下采樣方式。現代網絡中,也常用步幅卷積(Strided Convolution)來替代部分池化操作。

五、CNN 的典型結構

一個基礎 CNN 通常由三類模塊組成:

卷積層 → 激活函數 → 池化層 → 全連接層 → 輸出層

更具體地說,常見圖像分類 CNN 可以寫成:

→ 輸出類別得分

其中:

? 卷積層負責提取局部特征

? ReLU 負責引入非線性

? 池化層負責壓縮空間尺寸

? 展平操作把多維特征圖轉換成一維向量

? 全連接層負責綜合特征并輸出類別得分


圖 5:卷積神經網絡的典型結構

在圖像分類任務中,CNN 的前半部分通常稱為特征提取器,后半部分通常稱為分類器。

可以簡單理解為:

? 特征提取器:從圖像中提取有用視覺特征

? 分類器:根據這些特征判斷類別

例如,對于手寫數字識別任務,前面的卷積層可能學習筆畫、彎曲結構、局部紋理等特征,后面的全連接層則根據這些特征判斷數字類別。

六、CNN 為什么適合圖像任務

CNN 適合圖像任務,主要來自三個結構優勢:局部感受野、權重共享和層級特征學習。

1、局部感受野

局部感受野(Local Receptive Field)表示一個神經元只關注輸入中的局部區域。

在圖像中,局部像素往往具有強相關性。例如,一個邊緣通常由相鄰像素共同形成。卷積層利用局部感受野,可以優先學習這些局部結構,而不必一開始就連接整張圖像。

這比普通全連接層更符合圖像數據的空間規律。

2、權重共享

權重共享(Weight Sharing)表示同一個卷積核在圖像不同位置重復使用。

如果一個卷積核學會檢測某種邊緣模式,那么它可以在整張圖像的不同位置檢測同樣的模式。

這帶來兩個好處:

? 大幅減少參數數量

? 提高對位置變化的適應能力

例如,同一個豎直邊緣可能出現在圖像左側、右側或中間。通過權重共享,CNN 不需要為每個位置單獨學習一套參數。

3、層級特征學習

CNN 的淺層通常學習低級特征,深層逐漸學習更抽象的高級特征。

可以粗略理解為:

? 淺層:邊緣、角點、紋理

? 中層:局部形狀、部件

? 深層:物體結構、類別語義

這種層級特征學習能力,是 CNN 在圖像識別任務中表現優異的重要原因。

4、與 MLP 的對比

如果用 MLP 直接處理圖像,通常需要展平輸入。這樣會削弱空間結構,同時帶來大量參數。

而 CNN 在卷積階段保留了圖像的二維結構,通過局部連接和權重共享更高效地提取空間特征。


圖 6:MLP 與 CNN 處理圖像方式的對比

可以簡單對比為:

? MLP:把圖像展平成向量,再進行全連接計算

? CNN:保留圖像空間結構,用卷積核逐層提取局部特征

七、PyTorch 實現:手寫數字分類 CNN

下面使用 PyTorch 構建一個簡單 CNN,完成 MNIST 手寫數字分類任務。


圖 7:CNN 在 MNIST 上的訓練與預測流程

MNIST 是經典手寫數字圖像數據集,圖像為 0 到 9 的數字類別。Torchvision 提供了 torchvision.datasets.MNIST 數據集接口,可以通過 root、train、transform、target_transform、download 等參數加載數據。

1、導入庫并設置環境

這里使用:

? torch.nn 定義神經網絡層

? torch.optim 定義優化器

? DataLoader 按小批量加載數據

? torchvision.datasets 加載 MNIST 數據集

? torchvision.transforms 進行圖像預處理

2、準備 MNIST 數據集

其中:

? ToTensor() 將圖像轉換為張量

? Normalize() 對圖像進行標準化

? train=True 表示加載訓練集

? train=False 表示加載測試集

? download=True 表示如果本地沒有數據則自動下載

? DataLoader 用于按批量讀取數據

MNIST 是灰度圖像,因此輸入通道數為 1。每張圖片大小為 28 × 28。

3、定義 CNN 模型

這個 CNN 可以分為兩部分。

第一部分是特征提取器:

Conv2d → ReLU → MaxPool2d → Conv2d → ReLU → MaxPool2d

第二部分是分類器:

Flatten → Linear → ReLU → Linear

輸入圖像尺寸變化過程為:

輸出:10 個類別得分

其中:

? 第一個卷積層把 1 個輸入通道變成 16 個特征通道

? 第二個卷積層把 16 個通道變成 32 個通道

? 兩次最大池化分別把空間尺寸減半

? 最后一層輸出 10 個類別得分,對應數字 0 到 9

4、定義損失函數和優化器

其中:

? CrossEntropyLoss 用于多分類任務

? Adam 是常用優化器,lr=0.001 表示學習率,model.parameters() 表示把模型所有可訓練參數交給優化器

需要注意,CrossEntropyLoss() 直接接收模型輸出的 logits,不需要在模型最后手動添加 Softmax。PyTorch 文檔說明,CrossEntropyLoss 可用于 C 類分類任務,并計算輸入 logits 與目標類別之間的交叉熵損失。

5、訓練模型

    

這段訓練代碼體現了 PyTorch 中最常見的訓練閉環:

前向傳播 → 計算損失 → 清空舊梯度 → 反向傳播 → 更新參數

其中:

? model.train() 表示進入訓練模式

? outputs = model(images) 表示前向傳播

? loss = criterion(outputs, labels) 表示計算損失

? optimizer.zero_grad() 用于清空舊梯度

? loss.backward() 用于自動計算梯度

? optimizer.step() 用于更新參數

6、評估模型

其中:

? model.eval() 表示進入評估模式

? torch.no_grad() 表示不計算梯度

? outputs.argmax(dim=1) 取最大得分對應的類別

? accuracy 表示測試集準確率

對于多分類任務,模型輸出的是 10 個類別得分。哪個類別得分最高,模型就預測為哪個數字。

7、查看單個批次的形狀變化

為了幫助理解 CNN 中張量形狀的變化,可以打印一個批次的輸入和輸出形狀:

可能看到類似結果:

輸出結果形狀: torch.Size([64, 10])

其中:

? 64 表示 batch_size

? 1 表示灰度圖像通道數

? 28 × 28 表示圖像高和寬

? 10 表示 10 個類別得分

這說明模型把一批 28 × 28 的手寫數字圖像,轉換成了對應 10 個類別的預測得分。

八、CNN 的適用場景、局限與擴展方向

卷積神經網絡是計算機視覺中的基礎模型之一。它非常適合處理具有空間結構的數據,但也并不是所有任務中的唯一選擇。


圖 8:CNN 的適用場景、局限與擴展方向

1、適用場景

CNN 常用于圖像和視覺相關任務,例如:

? 圖像分類

? 目標檢測

? 圖像分割

? 人臉識別

? 醫學影像分析

? 遙感圖像分析

? 視頻理解中的局部空間特征提取

在這些任務中,局部結構和空間模式通常很重要,因此 CNN 具有天然優勢。

2、主要優勢

CNN 的主要優勢包括:

? 能保留圖像空間結構

? 參數量相對全連接網絡更少

? 能自動學習局部特征

? 對局部平移具有一定魯棒性

? 能逐層形成從低級到高級的視覺表示

? 適合作為復雜視覺模型的基礎模塊

其中,局部連接和權重共享是 CNN 高效處理圖像的重要原因。

3、主要局限

CNN 也有一些局限:

? 對大規模數據和算力有一定需求

? 深層 CNN 訓練時需要合理初始化、歸一化和優化策略

? 對長距離依賴關系的建模能力有限

? 對圖像外的結構化表格數據未必優于傳統方法

? 對旋轉、尺度變化等復雜變換仍可能需要數據增強或特殊結構

在一些現代視覺任務中,CNN 常與注意力機制、Transformer 或多尺度結構結合,以提升特征表達能力。

4、擴展方向

從基礎 CNN 出發,可以繼續學習以下模型和技術:

? LeNet:早期經典 CNN

? AlexNet:推動深度 CNN 發展的代表模型

? VGG:使用小卷積核堆疊深層網絡

? ResNet:通過殘差連接緩解深層網絡訓練困難

? U-Net:常用于醫學圖像分割

? YOLO:常用于目標檢測

? Vision Transformer:將 Transformer 引入視覺任務

這些模型雖然結構更復雜,但都可以從卷積、特征圖、下采樣、非線性激活和端到端訓練等基礎思想出發理解。

小結

卷積神經網絡通過卷積核、局部連接、權重共享和池化等機制,更有效地處理圖像中的空間結構。它能夠逐層學習從邊緣、紋理到形狀和類別語義的視覺特征,是計算機視覺中的基礎模型。理解 CNN,有助于繼續學習 ResNet、U-Net、YOLO 和 Vision Transformer 等更復雜的視覺模型。

點贊有美意,贊賞是鼓勵

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
洪森公開道歉,向全體柬埔寨人謝罪,主動攬下了柬泰戰敗的責任

洪森公開道歉,向全體柬埔寨人謝罪,主動攬下了柬泰戰敗的責任

半路友人之他
2026-06-11 21:24:46
克里斯·韋伯嘲諷馬刺“最傲慢比賽”:學會把球交給庫里式的真核

克里斯·韋伯嘲諷馬刺“最傲慢比賽”:學會把球交給庫里式的真核

賽場名場面
2026-06-13 01:26:38
鵝腿阿姨翻車后續:人被警方帶走,黑料曝光,店關門或將天價賠償

鵝腿阿姨翻車后續:人被警方帶走,黑料曝光,店關門或將天價賠償

阿纂看事
2026-06-11 17:19:53
21.09萬考生!濟南市2026年中考6月13日至15日舉行

21.09萬考生!濟南市2026年中考6月13日至15日舉行

閃電新聞
2026-06-10 12:42:13
曼聯8000萬英鎊鎖定西漢姆中場,歐文:他和梅努將是絕配

曼聯8000萬英鎊鎖定西漢姆中場,歐文:他和梅努將是絕配

樂道足球C
2026-06-12 20:09:05
2026很少踩坑!這3個生肖6月后更會“聚財”,年末存錢更多!

2026很少踩坑!這3個生肖6月后更會“聚財”,年末存錢更多!

毅談生肖
2026-06-08 11:26:54
同濟大學養不起那么多人!傳統工科強校的財務困境這下藏不住了!

同濟大學養不起那么多人!傳統工科強校的財務困境這下藏不住了!

霹靂炮
2026-06-07 23:39:08
【微特稿】特朗普涉伊朗表態“大轉彎” 以總理“猝不及防”

【微特稿】特朗普涉伊朗表態“大轉彎” 以總理“猝不及防”

新華社
2026-06-12 13:33:22
外交部發言人宣布中方對菲律賓國防部長特奧多羅及其親屬實施制裁

外交部發言人宣布中方對菲律賓國防部長特奧多羅及其親屬實施制裁

界面新聞
2026-06-11 20:07:10
鵝腿阿姨用鴨腿翻車成就人大食堂主任:冤屈終于洗白,只賣真鵝腿

鵝腿阿姨用鴨腿翻車成就人大食堂主任:冤屈終于洗白,只賣真鵝腿

蜜桔娛樂
2026-06-11 11:06:32
芯片產能持續趨緊 谷歌選定三星合作生產下一代TPU

芯片產能持續趨緊 谷歌選定三星合作生產下一代TPU

財聯社
2026-06-12 08:46:08
最幸福的老年人,就看這10條,一條10分,算算你能得多少分

最幸福的老年人,就看這10條,一條10分,算算你能得多少分

荷蘭豆愛健康
2026-06-01 19:40:56
靈魂拷問!鵝腿阿姨上熱搜,虎撲網友直呼看不懂

靈魂拷問!鵝腿阿姨上熱搜,虎撲網友直呼看不懂

熱搜摘要官
2026-06-12 01:41:25
趁丈夫洗澡,我用他微信讓婆婆轉八千,她秒轉8萬并留言:傻孩子,我兒子那420萬的婚房早就寫你名了,這錢你拿著零花

趁丈夫洗澡,我用他微信讓婆婆轉八千,她秒轉8萬并留言:傻孩子,我兒子那420萬的婚房早就寫你名了,這錢你拿著零花

LULU生活家
2026-05-25 08:37:59
世界杯:墨西哥VS南非、韓國VS捷克復盤,一針見血

世界杯:墨西哥VS南非、韓國VS捷克復盤,一針見血

雜草體育社
2026-06-12 12:32:06
穆里尼奧將重返皇馬?12年了,伯納烏還在等那個特殊的一個

穆里尼奧將重返皇馬?12年了,伯納烏還在等那個特殊的一個

佳佳說奇事故事
2026-04-19 21:04:53
報復來了,中國緊急踩剎車,特朗普坐鎮白宮戰情室,炸彈落在伊朗

報復來了,中國緊急踩剎車,特朗普坐鎮白宮戰情室,炸彈落在伊朗

阿芒娛樂說
2026-06-12 01:39:46
湖人終于醒了!中鋒問題不解決,走出西部就永遠是奢望

湖人終于醒了!中鋒問題不解決,走出西部就永遠是奢望

奕辰說球
2026-06-12 14:16:25
宋慧喬又帶火了一種時髦新穿法:“白色T恤+花苞裙”,洋氣又高級

宋慧喬又帶火了一種時髦新穿法:“白色T恤+花苞裙”,洋氣又高級

蓓小西
2026-05-25 09:25:37
用它作為動力驅動可達光速的70%,科學家對它的研究才剛開始!

用它作為動力驅動可達光速的70%,科學家對它的研究才剛開始!

宇宙時空
2026-06-11 19:00:13
2026-06-13 02:36:49
MediaTea
MediaTea
專業的數字媒體、新媒體技術
1888文章數 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

美加墨世界杯第二場比賽就現空座 英媒:尷尬

頭條要聞

美加墨世界杯第二場比賽就現空座 英媒:尷尬

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

健康
教育
時尚
本地
公開課

老人、小孩、孕婦,吃粽子有啥風險

教育要聞

家長成了“瘋女人”,被女兒作業搞崩潰,網友:太真實

夏天別總穿一身白或一身黑!試試一半彩色、一半基礎色,高級亮眼

本地新聞

AK劉彰邂逅河北南大港濕地

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版