成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

終于把卷積神經網絡算法搞懂了!!!

人工智能
卷積神經網絡(CNN)是一種專為處理像圖像等具有網格拓撲結構的數據而設計的深度學習模型。

大家好,我是小寒

今天給大家介紹一個強大的算法模型,卷積神經網絡算法

卷積神經網絡(CNN)是一種專為處理像圖像等具有網格拓撲結構的數據而設計的深度學習模型。

CNN 通過使用卷積運算來替代傳統神經網絡的全連接層,能夠有效減少參數數量并保留空間信息,極大地提升了圖像識別、目標檢測等任務的效果。

圖片圖片

卷積神經網絡的基本構成

卷積神經網絡主要由卷積層、池化層和全連接層組成。

1.卷積層

卷積層是 CNN 的核心組成部分,用于從輸入數據中提取局部特征。

其主要運算是通過多個卷積核(filter)對輸入數據進行卷積操作,生成特征圖 (feature map)。

圖片圖片

  • 卷積核
    卷積核是一個小矩陣,它在輸入數據上滑動,應用點積運算來提取特定的局部特征。
    卷積核的大小和數量是可調的超參數。
  • Stride(步幅)
    這是卷積核在輸入數據上移動的步長。
    步幅越大,特征圖的尺寸越小。

圖片圖片

  • Padding(填充)
    為保持卷積后的輸出尺寸與輸入相同,通常會在輸入數據的邊緣進行零填充。

圖片圖片

卷積層的輸出稱為特征圖(Feature Map),通過多次卷積操作,CNN 能夠逐層提取出越來越高層次的特征信息。

2.池化層

池化層的主要作用是通過下采樣來減少數據的維度,同時保留輸入的關鍵信息。

池化層通常插入在卷積層之后,用于減少計算量和參數數量,并在某種程度上減輕過擬合的風險。

常見的池化方法有最大池化和平均池化。

  • 最大池化
    最大池化是最常見的池化操作。它在局部窗口中選擇最大值。
    例如,使用一個2x2的窗口,每次移動步長為2,對局部區域的像素值取最大值。
    最大池化的目的在于保留最顯著的特征。

圖片圖片

  • 平均池化
    它計算局部窗口內所有值的平均。平均池化會平滑特征,適合于某些應用場景。

圖片圖片

3.全連接層

在經過若干個卷積層和池化層之后,通常會將特征圖展平成一個向量,并將其傳遞給全連接層。

全連接層與傳統的前饋神經網絡類似,每個神經元與上一層的所有神經元相連。

圖片圖片

卷積神經網絡的優勢

  • 局部連接性
    通過卷積操作,CNN 能夠捕捉局部的空間特征,減少參數。
  • 權值共享
    卷積核的權值在圖像中多個位置共享,進一步降低了參數量。
  • 自動提取特征
    通過逐層的卷積操作,CNN 可以自動提取從低級到高級的特征,不需要手工設計特征。

示例代碼

下面是一個使用卷積神經網絡(CNN)進行圖像分類的完整示例代碼,采用 PyTorch 框架來實現。

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

# 定義 CNN 模型
class CNNModel(nn.Module):
    def __init__(self):
        super(CNNModel, self).__init__()
        # 定義第一層卷積層,輸入通道為 3(CIFAR-10 中的彩色圖像),輸出通道為 32,卷積核大小為 3x3
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
        # 定義第二層卷積層
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
        # 定義池化層
        self.pool = nn.MaxPool2d(2, 2)
        # 定義全連接層,假設輸入為 64*8*8,輸出為 512
        self.fc1 = nn.Linear(64 * 8 * 8, 512)
        # 定義第二個全連接層,輸出為 10(CIFAR-10 有 10 個類別)
        self.fc2 = nn.Linear(512, 10)

    def forward(self, x):
        x = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        x = x.view(-1, 64 * 8 * 8)
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 超參數
batch_size = 64
learning_rate = 0.001
num_epochs = 10

# 數據預處理
transform = transforms.Compose([
    transforms.RandomHorizontalFlip(),  # 隨機水平翻轉
    transforms.RandomCrop(32, padding=4),  # 隨機裁剪
    transforms.ToTensor(),  # 轉換為張量
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))  # 歸一化
])

# 加載 CIFAR-10 數據集
trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True)

testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=False)

model = CNNModel()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=learning_rate)

# 訓練模型
for epoch in range(num_epochs):
    running_loss = 0.0
    for i, (inputs, labels) in enumerate(trainloader, 0):
        inputs, labels = inputs, labels
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 100 == 99:  
            print(f'Epoch [{epoch + 1}/{num_epochs}], Step [{i + 1}], Loss: {running_loss / 100:.4f}')
            running_loss = 0.0

print('Finished Training')

# 在測試集上評估模型
correct = 0
total = 0
with torch.no_grad():
    for inputs, labels in testloader:
        outputs = model(inputs)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print(f'Accuracy of the network on the 10000 test images: {100 * correct / total:.2f}%')


責任編輯:武曉燕 來源: 程序員學長
相關推薦

2024-10-05 23:00:35

2024-11-15 13:20:02

2024-09-20 07:36:12

2025-02-21 08:29:07

2024-09-12 08:28:32

2024-10-17 13:05:35

神經網絡算法機器學習深度學習

2024-12-12 00:29:03

2024-11-07 08:26:31

神經網絡激活函數信號

2024-07-24 08:04:24

神經網絡激活函數

2024-12-02 01:10:04

神經網絡自然語言DNN

2024-09-26 07:39:46

2024-09-23 09:12:20

2024-10-16 07:58:48

2024-12-03 08:16:57

2024-07-17 09:32:19

2024-11-14 00:16:46

Seq2Seq算法RNN

2021-06-22 09:46:52

神經網絡人工智能深度學習

2024-08-01 08:41:08

2024-10-08 15:09:17

2024-10-08 10:16:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品一区 | 欧美日韩专区 | 久久精品国产一区二区三区 | 精品少妇一区二区三区在线播放 | 欧洲精品在线观看 | 中文字幕在线免费观看 | 九九久久久 | 天堂在线一区 | 亚洲成人福利在线观看 | 成人福利网站 | 欧美精品国产精品 | 日本高清中文字幕 | 精品永久 | 亚洲一区二区免费 | 国产成人综合在线 | 精品国产一区二区国模嫣然 | 蜜臀久久99精品久久久久野外 | 日韩在线观看一区 | 日韩一级 | 欧美激情a∨在线视频播放 成人免费共享视频 | 亚洲高清在线观看 | 日韩一区二区三区精品 | 亚洲精品九九 | 91久久国产综合久久 | 久久精品亚洲一区二区三区浴池 | 久久精品亚洲欧美日韩精品中文字幕 | 在线视频久久 | 欧美综合久久久 | 91www在线观看 | 欧美亚洲视频 | 国产在线激情视频 | 欧美日韩精品久久久免费观看 | 99tv成人影院| 久久久精品一区二区三区 | 欧美日韩在线一区二区三区 | 亚洲成年在线 | 日本精品一区二区在线观看 | 欧美日韩毛片 | 国产二区精品视频 | 久久精品免费观看 | 99热这里 |