神經網絡——池化層

目錄

池化層?

最大池化層

MaxPool2d

最大池化操作圖示?

最大池化操作代碼演示?

綜合代碼案例?


池化層?

池化層(Pooling Layer)

核心作用:通過降采樣減少特征圖尺寸,降低計算量,增強特征魯棒性。

1. 常見類型

  • 最大池化(Max Pooling):提取局部區域最大值。

  • 平均池化(Average Pooling):計算局部區域平均值。

  • 全局池化(Global Pooling):將每個通道的特征圖壓縮為一個標量(常用于分類任務)。

2. 參數與計算

  • 窗口大小(Kernel Size):如 2×2、3×3。

  • 步長(Stride):窗口滑動的步長,通常等于窗口大小(如 2)。

  • 填充(Padding):邊緣填充策略,保持輸出尺寸。

MaxPool->下采樣

MaxUnPool->上采樣?

“池化層”(Pooling Layer)的命名源于其核心操作與 “池”(Pool)這一概念的類比 —— 就像從一個 “池子” 里提取所需內容,本質是對局部區域內的信息進行匯總、篩選并輸出。

具體來說,“池” 在這里可理解為 “局部數據區域”:
池化層會將輸入特征圖劃分為多個不重疊的小區域(比如 2×2 的窗口),每個小區域就像一個 “池子”;然后對每個 “池子” 里的所有數據(像素值或特征值)執行特定操作(最大池化取最大值、平均池化取平均值等),最終從每個 “池子” 里只輸出一個結果。

這個過程就像從每個 “池子” 里 “提取” 出最具代表性的信息(比如最大池化提取 “最顯著特征”,平均池化提取 “平均特征”),因此被形象地稱為 “池化”。


最大池化層

?最大池化層是卷積神經網絡(CNN)中用于下采樣(Downsampling)?的關鍵組件,通過在輸入特征圖的局部非重疊區域(池化窗口)內選取最大值作為輸出,實現特征篩選與維度壓縮。其核心是保留局部區域內最顯著的特征信號,同時降低特征圖的空間分辨率。

核心參數

  1. 池化窗口尺寸(Kernel Size)
    常用?2×2?或?3×3,決定局部特征的感知范圍。窗口越大,壓縮率越高,但可能丟失細粒度特征。

  2. 步長(Stride)
    窗口滑動的步幅,通常與窗口尺寸一致(如?2×2?窗口對應步長 2),此時輸出尺寸為輸入的?1/2(沿高度和寬度)。

  3. 通道獨立性
    池化操作在每個通道內獨立進行,不跨通道融合(輸出通道數與輸入一致)。

功能與意義

  1. 維度縮減與計算效率提升
    通過降低特征圖的?H×W?維度,減少后續網絡層的參數量和計算量(如?2×2?池化可使特征圖面積變為原來的?1/4)。

  2. 特征魯棒性增強

    • 平移不變性:對輸入特征的輕微位置偏移(如目標小幅移動)具有容錯性(只要最大值仍在窗口內,輸出不變)。

    • 噪聲抑制:通過選取局部最大值,過濾次要信息(如背景噪聲),強化關鍵特征(如邊緣、紋理的強響應區域)。

  3. 防止過擬合
    減少特征冗余,降低模型對局部細節的過度依賴,提升泛化能力。

簡易解釋:

最大池化可以理解成 “抓重點” 的操作,用一個生活化的例子就能說清楚:

假設你有一張照片(對應輸入的特征圖),現在用一個小方格(比如 2x2 的池化窗口)在照片上 “掃”—— 每次掃到一個方格,就只留下這個方格里最亮的那個點(取最大值),其他點都忽略;然后方格按固定步長(比如每次挪 2 格)移到下一個位置,重復同樣的操作。

最后你會得到一張更小的照片:原來的細節少了,但保留了每個小區域里最突出的特征(比如最亮的色塊、最明顯的邊緣)。

這么做的好處很簡單:

  • 照片變小了,后續處理起來更快(降維,減少計算量);
  • 就算原照片里的物體稍微挪了一點位置(比如小方格稍微偏了點),只要最亮的點還在方格里,結果就不變(增強對位置變化的抗干擾能力)。?

簡單說,最大池化就是 “用最小的信息損失,把數據變小,同時抓住核心特征”。


MaxPool2d

?參數:

tip:

Floor和Ceiling兩個操作

簡單來說,就是向上下取整

?

此處ceil和floor兩個模式,表示池化核部分超出輸入圖像邊界時候是否保留?

池化后的形狀大小:

??

最大池化操作圖示?

最大池化操作代碼演示?

import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2dinput = torch.tensor([[1, 2, 0, 3, 1],[0, 1, 2, 3, 1],[1, 2, 1, 0, 0],[5, 2, 3, 1, 1],[2, 1, 0, 1, 1]
])
print(input.shape)
"""
打印結果:
torch.Size([5, 5])
不符合卷積層的輸入要求
在最簡單的情況下,輸入尺寸為 (N,C,H,W)
N:批量數
C:通道數
H:高度
W:寬度
"""
input = torch.reshape(input, (1, 1, 5, 5))class Mymodule(nn.Module):def __init__(self):super().__init__()self.maxpool = MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, input):output = self.maxpool(input)return outputmodel = Mymodule()
output = model(input)
print(output)

??Ceil_model=True時

?Ceil_model=False時?


綜合代碼案例?

import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset = torchvision.datasets.CIFAR10("../torchvision_dataset", train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset, batch_size=64)class Mymodule(nn.Module):def __init__(self):super().__init__()self.maxpool = MaxPool2d(kernel_size=3, ceil_mode=True)def forward(self, input):output = self.maxpool(input)return outputmodel = Mymodule()
step = 0
writer = SummaryWriter("logs_test5")
for data in dataloader:imgs, targets = datawriter.add_images("input", imgs, step)output = model(imgs)writer.add_images("output", output, step)step += 1writer.close()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915751.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915751.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915751.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 默認圖庫播放視頻沒有自動循環功能,如何添加2

Android 默認圖庫播放視頻沒有自動循環功能, 如何添加 按如下方式修改可以添加 開發云 - 一站式云服務平臺 --- a/packages/apps/Gallery2/src/com/android/gallery3d/app/MovieActivity.java +++ b/packages/apps/Gallery2/src/com/android/gallery3d/app/MovieActivity.java…

數字孿生賦能智慧能源電力傳輸管理新模式

在“雙碳”戰略和能源數字化轉型的雙重驅動下,智慧能源系統亟需更高效、精細和智能的管理手段。數字孿生技術作為融合物理世界與數字空間的橋梁,為電力傳輸系統的全生命周期管理提供了強有力的技術支撐。本文聚焦數字孿生在智慧能源電力傳輸中的應用&…

Jmeter的元件使用介紹:(二)線程組詳解

Jmeter線程組默認包含三種:線程組、setUp線程組、tearDown線程組。線程組之間的執行順序為:setUp線程組->線程組->tearDown線程組。多數情況都是選用線程組,setUp線程組用于做一些腳本的前置準備,比如:跨線程組設…

AI替代人工:浪潮中的沉浮與覺醒

當AlphaGo以4:1的比分戰勝圍棋大師李世石之時,人機博弈的疆界被重新劃定;當工廠車間里機械臂以驚人精度與不知疲倦的姿態取代了工人重復的手勢;當客服電話那頭響起的不再是溫存人聲,而成了準確但缺乏溫度的AI語音;當算…

數學建模--matplot.pyplot(結尾附線條樣式表格)

matplotlib.pyplot繪圖接口 1. 用法 導入模塊 import matplotlib.pyplot as plt import numpy as np # 用于生成示例數據繪制簡單圖表 # 生成數據 x np.linspace(0, 10, 100) y np.sin(x)# 創建圖形和坐標軸 plt.figure(figsize(8, 4)) # 設置圖表大小 plt.plot(x, y, …

NumPy 實現三維旋轉變換

在三維空間中,物體的旋轉變換是計算機圖形學、機器人學以及三維建模等領域中一個至關重要的操作。這種變換可以通過構造特定的旋轉矩陣并將其應用于三維點或向量來實現。本文將深入探討如何利用 NumPy 這一強大的 Python 科學計算庫來實現三維旋轉變換,從基本的數學原理到具體…

基于Springboot的中藥商城管理系統/基于javaweb的中藥材銷售系統

管理員:登錄,個人中心,用戶管理,藥材分類管理,藥材信息管理,藥材入庫管理, 藥材出庫管理,訂單管理,云端藥館,系統設置用戶:注冊,登錄&…

試用SAP BTP 02A:試用SAP HANA Cloud

進入SAP BTP主控室 -> 子賬 -> 服務市場,選擇【數據和分析】-> 點擊SAP HANA Cloud點擊創建選擇服務、計劃、運行時環境、空間,輸入實例名稱,點擊下一步在JSON文件中配置HANA管理員密碼,點擊下一步審核hana 實例信息&…

純CPU場景下C++的分布式模型訓練框架設計思路

0. 參數分配 稠密參數 → MPI 集合通信(All-Reduce / Broadcast / Reduce-Scatter)。稀疏參數 → brpc Parameter Server 異步推拉。 完全去掉 NCCL/GPU 相關部分。1. 整體拓撲 ┌----------------┐ ┌----------------┐ │ Worker-0 │…

訓練日志7.21

conda環境,服務器原因無法使用,需重新搭建 學習一下預訓練和微調相關內容,對于預訓練整體的流程,還不太清楚,自己估計是訓練不動,只能微調

Java 高頻算法

Java高頻算法面試題 以下是Java面試中常見的高頻算法題目&#xff0c;涵蓋了數據結構、算法思想和實際應用場景。 一、數組與字符串 1. 兩數之和 public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map new HashMap<>();for (int i 0; i <…

汽車控制系統——CAPL腳本

CAPL (Communication Access Programming Language) 是一種專門用于嵌入式系統和汽車電子測試領域的編程語言&#xff0c;特別是在 CAN (Controller Area Network) 總線和汽車網絡通信系統中被廣泛使用。它由 Vector 公司開發&#xff0c;主要用于編寫與汽車控制單元 (ECU) 進行…

深入解析Hive SQL轉MapReduce的編譯原理:從AST抽象語法樹到Operator執行樹

Hadoop與Hive SQL簡介Hadoop生態系統的核心架構作為大數據處理領域的基石&#xff0c;Hadoop生態系統采用分布式架構設計&#xff0c;其核心組件構成了一套完整的解決方案框架。HDFS&#xff08;Hadoop Distributed File System&#xff09;作為底層存儲系統&#xff0c;采用主…

在 React 中實現全局防復制hooks

用于防止頁面內容被復制、剪切或通過右鍵菜單操作。它接受三個可配置參數&#xff1a;disableCopy&#xff08;禁用復制&#xff0c;默認true&#xff09;、disableCut&#xff08;禁用剪切&#xff0c;默認true&#xff09;和 disableContextMenu&#xff08;禁用右鍵菜單&…

InfluxDB HTTP API 接口調用詳解(一)

引言 ** 在當今數字化時代&#xff0c;時間序列數據無處不在&#xff0c;從物聯網設備產生的傳感器數據&#xff0c;到金融領域的交易記錄&#xff0c;再到系統運維中的監控指標&#xff0c;這些數據蘊含著豐富的信息&#xff0c;對于企業的決策制定、業務優化以及問題排查等…

使用JMeter進行壓力測試(以黑馬點評為例、詳細圖解)

目錄 一、前言 二、使用JMeter進行壓力測試 一、前言 本博客主要記錄如何使用JMeter進行壓力測試&#xff0c;以黑馬點評P44利用互斥鎖解決緩存擊穿問題課程為例。至于如何完成JMeter的安裝配置及創建桌面快捷方式可以看我的另一篇博客&#xff0c;鏈接如下&#xff1a; 壓測…

舊手機部署輕量級服務器

將舊手機改造為Linux系統設備&#xff0c;不僅能賦予閑置設備新生&#xff0c;還能作為輕量級服務器、開發環境或學習平臺使用。以下是三種主流方案&#xff0c;涵蓋不同技術需求和安全等級&#xff0c;附操作步驟與避坑指南&#xff1a; ?? 一、三種安裝方案對比與選擇 方法…

micro avg、macro avg 和 weighted avg 的區別

問題描述&#xff1a; 在多分類任務的評估報告中&#xff0c;經常看到 micro avg、macro avg 和 weighted avg 三種平均指標&#xff0c;請解釋它們的區別以及各自的適用場景。&#x1f3af; 參考答案&#xff1a; 這三種平均指標是用來評估多分類模型性能的不同方式&#xff0…

Kafka灰度方案

一、kafka灰度方案架構設計方案&#xff1a;1、外部生產-內部消費場景&#xff1a;&#xff08;外部生產-內部消費&#xff09;解決方案&#xff1a;先通過kdis分流服務---消費外部生產的消息&#xff0c;然后根據管理后臺-灰度配置mcs-mimp-core應用默認的環境版本&#xff0c…

深入詳解K近鄰算法(KNN)在腦部疾病診斷中的應用與實現

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#,Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…