亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當前位置:首頁 > 學習資源 > 講師博文 > 卷積神經網絡(CNN)必備基礎知識

卷積神經網絡(CNN)必備基礎知識 時間:2025-06-09      來源:華清遠見

在計算機視覺和深度學習領域,卷積神經網絡(Convolutional Neural Networks, CNN) 是一類深度學習算法,廣泛應用于計算機視覺、自然語言處理、語音識別等領域。作為深度學習的重要組成部分,CNN的核心思想是通過模仿生物視覺皮層的工作原理,有效地提取和學習圖像或其他數據中的特征。

本文將帶你快速掌握 CNN 的核心概念,并通過 PyTorch 實現一個經典的手寫數字分類模型(MNIST),助你快速入門!

一、 神經網絡基礎

首先需要了解神經網絡的基礎知識。神經網絡由多個神經元(或節點)組成,每個神經元通過連接傳遞信息,類似于生物神經系統的運作方式。最簡單的神經網絡結構包括輸入層、隱藏層和輸出層。

· 輸入層:接受外部數據輸入。

· 隱藏層:通過加權計算輸入信號并進行非線性變換。

· 輸出層:根據隱藏層的計算結果產生輸出。

CNN 是一種特殊的神經網絡,它在傳統的全連接層基礎上引入了卷積層、池化層等層次結構,專門設計用于處理具有格狀結構的數據(如圖像)。

二、CNN 的核心組成結構

1. 卷積層(Convolutional Layer)

· 使用可學習的卷積核(Filter)對輸入進行滑動卷積操作,提取局部特征。

· 卷積操作的基本過程如下:

o 使用卷積核在輸入數據上滑動,通過點乘計算卷積結果。

o 通過滑動窗口將卷積核應用于圖像的不同區域,從而提取局部特征(如邊緣、紋理等)。

o 結果稱為特征圖(Feature Map),是對輸入數據局部區域的提取。

· 卷積的主要作用是提取邊緣、紋理、形狀等局部結構。

2. 池化層(Pooling Layer)

· 池化層用于減少數據的維度,從而降低計算復雜度并避免過擬合。最常用的池化方式有最大池化和平均池化。

o 最大池化:從池化窗口中選取最大的值作為輸出。

o 平均池化:從池化窗口中選取平均值作為輸出。

· 池化操作通過減少空間維度,使得CNN更具魯棒性,能夠識別圖像中的重要特征,而不受小的平移和變形影響。

3. 激活函數

激活函數的作用是引入非線性特征,使得網絡能夠逼近復雜的函數。CNN中常用的激活函數包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。

· ReLU:最常用的激活函數,定義為:ReLU(x)=max(0,x)

ReLU 函數具有較好的非線性特性,且能夠避免梯度消失問題,因此廣泛應用于現代深度神經網絡中。

· 激活函數通過在卷積層和全連接層后進行非線性變換,增加了網絡的表達能力。

4. 全連接層(Fully Connected Layer)

· 全連接層(Fully Connected Layer,簡稱FC)在CNN中通常位于網絡的最后部分,用于將卷積和池化操作提取到的特征映射到最終的類別標簽。全連接層的每個神經元都與上一層的所有神經元相連,因此參數較多,計算量較大。

三、卷積神經網絡的工作流程

CNN的工作流程可以簡要總結為以下幾個步驟:

1. 輸入圖像:圖像被輸入到CNN的輸入層。

2. 卷積層:卷積層使用卷積核對圖像進行卷積操作,提取局部特征。

3. 池化層:池化層對卷積后的特征圖進行下采樣,減少數據維度。

4. 激活函數:激活函數對每一層的輸出進行非線性變換。

5. 全連接層:將提取到的特征映射到最終的類別標簽。

6. 輸出層:網絡輸出分類結果或回歸預測。

四、卷積神經網絡的工作流程

卷積輸出尺寸計算公式:

五、PyTorch 實現一個簡單的 CNN 分類模型

我們將使用 MNIST 數據集(10類手寫數字,圖像大小為 28×28)來訓練和測試一個基本的卷積神經網絡。

安裝依賴

pip install torch torchvision matplotlib

代碼示例

import torch

import torch.nn as nn

import torch.optim as optim

from torchvision import datasets, transforms

from torch.utils.data import DataLoader

# 設置運行設備

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# 數據預處理:轉為Tensor,并進行歸一化

transform = transforms.Compose([

    transforms.ToTensor(),

    transforms.Normalize((0.1307,), (0.3081,))

])

# 加載 MNIST 數據集

train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)

test_dataset  = datasets.MNIST(root='./data', train=False, transform=transform)

train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)

test_loader  = DataLoader(test_dataset, batch_size=1000, shuffle=False)

# 定義 CNN 模型

class SimpleCNN(nn.Module):

    def __init__(self):

        super(SimpleCNN, self).__init__()

        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)

        self.pool  = nn.MaxPool2d(2)

        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)

        self.fc1   = nn.Linear(320, 50)

        self.fc2   = nn.Linear(50, 10)

 

    def forward(self, x):

        x = self.pool(torch.relu(self.conv1(x)))  # 輸出大小:(10, 12, 12)

        x = self.pool(torch.relu(self.conv2(x)))  # 輸出大小:(20, 4, 4)

        x = x.view(-1, 320)                       # 展平

        x = torch.relu(self.fc1(x))

        x = self.fc2(x)

        return x

# 模型訓練配置

model = SimpleCNN().to(device)

criterion = nn.CrossEntropyLoss()

optimizer = optim.Adam(model.parameters(), lr=0.001)

# 訓練模型

for epoch in range(1, 6):

    model.train()

    for data, target in train_loader:

        data, target = data.to(device), target.to(device)

        optimizer.zero_grad()

        output = model(data)

        loss = criterion(output, target)

        loss.backward()

        optimizer.step()

    print(f'Epoch {epoch}, Loss: {loss.item():.4f}')

 

# 模型測試

model.eval()

correct = 0

with torch.no_grad():

    for data, target in test_loader:

        data, target = data.to(device), target.to(device)

        output = model(data)

        pred = output.argmax(dim=1)

        correct += pred.eq(target).sum().item()

 

accuracy = 100. * correct / len(test_loader.dataset)

print(f'\nTest Accuracy: {accuracy:.2f}%')

總結

卷積神經網絡(CNN)通過模擬生物視覺系統的工作方式,有效地提取圖像等數據中的特征,廣泛應用于計算機視覺和其他深度學習任務。理解CNN的基本構成,包括卷積操作、池化操作、激活函數和全連接層,是掌握這一技術的基礎。

隨著深度學習研究的不斷深入,CNN在多個領域的應用也不斷擴大,不僅限于圖像處理,也已延伸到語音識別、自然語言處理等多種領域。掌握CNN的基礎知識,能為進一步深入學習和研究深度學習奠定良好的基礎。

 

上一篇:聯邦學習在多源數據AI中的應用:開啟隱私保護新時代

下一篇:基于AI的嵌入式語音交互技術

戳我查看嵌入式每月就業風云榜

點我了解華清遠見高校學霸學習秘籍

猜你關心企業是如何評價華清學員的

干貨分享
相關新聞
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2024 北京華清遠見科技發展有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 国产人成精品免费视频 | 亚洲精品免费日日日夜夜夜夜 | 久草热视频在线观看 | 天天躁天天弄天天爱 | 中日韩欧美在线观看 | 黄色免费网址在线观看 | 操人人| 亚洲视频天堂 | 日本久久高清视频 | 日韩一级片免费 | 九色九色九色在线综合888 | 青青青青在线视频 | 狠狠躁夜夜躁人人爽天天 | 日本不卡va| 欧美日韩视频在线第一区二区三区 | 男人在天堂 | 波多结衣一区二区三区 | 天天操人人干 | 天天操狠狠干 | 波多野结衣免费免费视频一区 | 九九热精品在线视频 | 精品国产3p一区二区三区 | 天天色成人 | 日本黄大片视频在线播放 | 经典三级在线播放线观看 | 91热精品视频 | 久久亚洲精品国产精品777777 | 国产在线精品国自产拍影院午夜 | 精品9e精品视频在线观看 | 综合成人在线 | 韩国三级久久 | 久久这里只有精品2 | 欧美中文在线观看 | 中文字幕第30页 | 欧美精品www | jizz大全jizz大全jizz | 啪啪黄色片| 美女白虎穴 | 中文字幕天堂 | 日本一区免费在线观看 | 国产亚洲综合视频 |