深度學習:PyTorch卷積神經網絡(1)

本文目錄:

  • 一、CNN概述
  • 二、CNN日常應用
  • 三、CNN的卷積層
    • (一 )基本介紹
    • (二)卷積層計算
      • 1.對輸入數據的要求
      • 2.卷積核核心參數
      • 3.計算過程
      • 4.特征圖尺寸計算
      • 5.1、多通道卷積計算
      • 5.2、多卷積核計算
      • 6.PyTorch卷積層API

前言:上篇文章講解了圖像,這篇文章正式進入卷積神經網絡講解。

一、CNN概述

卷積神經網絡(Convolutional Neural Network, CNN)是一種專門用于處理網格狀數據(如圖像、視頻、語音信號等)的深度學習模型。其核心思想是通過局部感受野、權值共享和空間下采樣來高效提取特征,廣泛應用于計算機視覺、自然語言處理(如文本分類)等領域。

CNN網絡主要由三部分構成:卷積層、池化層和全連接層構成:

(1)卷積層負責提取圖像中的局部特征;

(2)池化層用來大幅降低參數量級(降維);

(3)全連接層類似人工神經網絡的部分,用來輸出想要的結果。

CNN實踐案例:
在這里插入圖片描述
上圖中CNN要做的事情就是:給定一張圖片,是車還是馬未知,是什么車也未知,現在需要模型判斷這張圖片里具體是一個什么東西,總之輸出一個結果:如果是車,那是什么車?

二、CNN日常應用

圖像分類:最常見的應用,例如識別圖片中的物體類別;

目標檢測:檢測圖像中物體的位置和類別;

圖像分割:將圖像分成多個區域,用于語義分割;

人臉識別:識別圖像中的人臉;

醫學圖像分析:用于檢測醫學圖像中的異常(如癌癥檢測、骨折檢測等);

自動駕駛:用于識別交通標志、車輛、行人等。

三、CNN的卷積層

(一 )基本介紹

卷積層是CNN的核心組件,用于提取輸入數據(如圖像、語音、文本)的局部特征。它的核心思想是通過局部連接、權值共享和平移不變性高效處理網格狀數據(如像素矩陣)。

卷積層利用卷積核(濾波器)對輸入進行處理(卷積操作),從而生成特征圖(feature map),并且每個卷積層能夠提取不同層次的特征,從低級特征(如邊緣)到高級特征(如物體的形狀)。

卷積層的主要作用如下:

  • 特征提取:卷積層的主要作用是從輸入圖像中提取低級特征(如邊緣、角點、紋理等)。通過多個卷積層的堆疊,網絡能夠逐漸從低級特征到高級特征(如物體的形狀、區域等)進行學習;

  • 權重共享:在卷積層中,同一個卷積核在整個輸入圖像上共享權重,這使得卷積層的參數數量大大減少,減少了計算量并提高了訓練效率;

  • 局部連接:卷積層中的每個神經元僅與輸入圖像的一個小局部區域相連,這稱為局部感受野,這種局部連接方式更符合圖像的空間結構,有助于捕捉圖像中的局部特征;

  • 空間不變性:由于卷積操作是局部的并且采用權重共享,卷積層在處理圖像時具有平移不變性。也就是說,不論物體出現在圖像的哪個位置,卷積層都能有效地檢測到這些物體的特征。

(二)卷積層計算

1.對輸入數據的要求

在這里插入圖片描述

2.卷積核核心參數

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.計算過程

在這里插入圖片描述
1. input 表示輸入的圖像;

2. filter 表示卷積核, 也叫做濾波器(濾波矩陣)

  • 一組固定的權重,因為每個神經元的多個權重固定,所以又可以看做一個恒定的濾波器filter;
  • 非嚴格意義上來講,下圖中紅框框起來的部分便可以理解為一個濾波器,即帶著一組固定權重的神經元,多個濾波器疊加便成了卷積層;
  • 一個卷積核就是一個神經元。
    在這里插入圖片描述
    卷積運算本質上就是在濾波器和輸入數據的局部區域間做點積。

如上圖左上角的點計算:
在這里插入圖片描述
按照上面的計算方法可以得到最終的特征圖為:
在這里插入圖片描述
實圖-特征圖對比:
在這里插入圖片描述
注意:如果想要提取更多特征(比如花朵的顏色深淺、輪廓、紋理),可以用多個卷積核(分別提取花朵的顏色深淺、輪廓、紋理,生成不同的特征圖)。

4.特征圖尺寸計算

在這里插入圖片描述
注意:

在這里插入圖片描述

5.1、多通道卷積計算

在這里插入圖片描述
如上圖,計算方法如下:

  1. 當輸入有多個通道(Channel), 例如 RGB 三個通道, 此時要求卷積核需要擁有相同的通道數(圖像有多少通道,每個卷積核就有多少通道);
  2. 每個卷積核通道與對應的輸入圖像的各個通道進行卷積;
  3. 將每個通道的卷積結果按位相加得到最終的特征圖。

如下圖所示:

在這里插入圖片描述

5.2、多卷積核計算

在卷積神經網絡(CNN)中,多個卷積核(Filters/Kernels) 的計算是核心操作之一,它使網絡能夠同時提取多種特征(如邊緣、紋理、顏色等)。

特點:

(1)每個卷積核學習不同的特征:

例如:第一個核可能檢測水平邊緣,第二個核檢測垂直邊緣,第三個核檢測紅色通道的特定模式等。

(2)輸出多通道特征圖:

若有 C_out 個卷積核,輸出特征圖會有 C_out 個通道。

在這里插入圖片描述
如上圖,可以看到:

  • 兩個神經元,意味著有兩個濾波器;
  • 數據窗口每次移動2個步長取3*3的局部數據,即stride=2;
  • zero-padding=1。輸入數據由5*5*3變為7*7*3
  • 左邊是輸入(7*7*3中,7*7代表圖像的像素/長寬,3代表R、G、B 三個顏色通道);
  • 中間部分是兩個不同的濾波器Filter w0、Filter w1;
  • 最右邊則是兩個不同的輸出。

6.PyTorch卷積層API

# 導包
import numpy as np
import matplotlib.pyplot as plt
import torch# 加載數據
n1_img = plt.imread('data/img.jpg')
print(n1_img.shape)
# 把numpy轉換為tensor
t1_img = torch.from_numpy(n1_img)
print(t1_img.shape)
# 交換維度 (H,W,C)->(C,H,W)
t2_img = t1_img.permute(2, 0, 1)
print(t2_img.shape)
# 升維
t3_img = t2_img.unsqueeze(0)
print(t3_img.shape)
# TODO 創建卷積層對象  設置輸出通道數4,意味著輸出的特征圖4
conv = torch.nn.Conv2d(in_channels=3, out_channels=4, kernel_size=3, stride=1, padding=0)
# TODO 調用卷積層對象,提取特征,注意類型轉換
output = conv(t3_img.to(torch.float32))
print(output.shape)
# 降維
output = output.squeeze(0)
print(output.shape)
# 交換維度
output = output.permute(1, 2, 0)
print(output.shape)
# 轉換為numpy TODO 索引0,1,2,3分別可以獲取第0,1,2,3個特征圖
output = output[:, :, 2].detach().numpy()  #2:第三個圖
print(output.shape)
# 畫圖
plt.imshow(output)
plt.show()

運行結果:
在這里插入圖片描述
可依次修改output = output[:, :, 2].detach().numpy() 將其它三個圖顯示出來(將2依次換成0、1、3)。

今日分享到此結束。

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

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

相關文章

linux網絡編程socket套接字

套接字概念 Socket本身有“插座”的意思,在Linux環境下,用于表示進程間網絡通信的特殊文件類型。本質為內核借助緩沖區形成的偽文件。 既然是文件,那么理所當然的,我們可以使用文件描述符引用套接字。與管道類似的,L…

Python 數據分析與可視化 Day 5 - 數據可視化入門(Matplotlib Seaborn)

🎯 今日目標 掌握 Matplotlib 的基本繪圖方法(折線圖、柱狀圖、餅圖)掌握 Seaborn 的高級繪圖方法(分類圖、分布圖、箱線圖)熟悉圖像美化(標題、標簽、顏色、風格)完成一組學生成績數據的可視化…

CephFS “Client Failing to Respond to Cache Pressure“ 告警分析

告警含義 當出現 Client failing to respond to cache pressure 警告時,表明: 元數據服務器 (MDS) 要求客戶端釋放緩存的元數據(如 inode Capabilities)客戶端未能及時響應 釋放請求核心觸發機制 MDS 通過以下周期性流程管理緩存 階段操作觸發條件Cache Trim 周期每隔 mds…

生成式人工智能實戰 | 生成對抗網絡(Generative Adversarial Network, GAN)

生成式人工智能實戰 | 生成對抗網絡 0. 前言1. 生成對抗網絡2. 模型構建2.1 生成器2.2 判別器 3. 模型訓練3.1 數據加載3.2 訓練流程 0. 前言 生成對抗網絡 (Generative Adversarial Networks, GAN) 是一種由兩個相互競爭的神經網絡組成的深度學習模型,它由一個生成…

緩存與加速技術實踐-MongoDB數據庫應用

一.什么是MongoDB MongoDB 是一個文檔型數據庫,數據以類似 JSON 的文檔形式存儲。 MongoDB 的設計理念是為了應對大數據量、高性能和靈活性需求。 MongoDB 使用集合(Collections)來組織文檔(Documents)&#xff0…

聲網對話式AI把“答疑機器人”變成“有思維的助教”

作為一家專注初高中學生的線上教育平臺,我們精心打磨的系統化課程收獲了不少認可,但課后無人答疑的難題卻始終橫亙在前。學生課后遇到疑惑,要么只能默默憋在心里,要么就得苦苦等待下一節課,家長們也頻繁抱怨 “花了錢&…

常見的排序方法

目錄 1. 插入排序 2. 希爾排序 3. 選擇排序 4. 堆排序 5. 冒泡排序 6. 快速排序 1. 快速排序的實現 1. 思路(以從小到大排序為例) 2. 選取基準元素的方法(Hoare) 3. 選取基準元素的方法(挖坑法) …

【matlab定位例程】基于AOA和TDOA混合的定位方法,背景為三維空間,自適應錨點數量,附下載鏈接

文章目錄 代碼概述代碼功能概述核心算法原理AOA定位模型TDOA定位迭代算法混合定位策略關鍵技術創新 運行結果4個錨點的情況40個錨點的情況 MATLAB源代碼 代碼概述 代碼功能概述 本代碼實現了一種三維空間中的混合定位算法,結合到達角( A O A AOA AOA&a…

專題:2025醫療AI應用研究報告|附200+份報告PDF匯總下載

原文鏈接:https://tecdat.cn/?p42748 本報告匯總解讀聚焦醫療行業人工智能應用的前沿動態與市場機遇,以數據驅動視角剖析技術演進與商業落地的關鍵路徑。從GenAI在醫療領域的爆發式增長,到細分場景的成熟度矩陣,再到運營成本壓力…

推薦一個前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全開源的前后端分離的中后臺管理系統基礎項目(純凈版)

XHan Admin 簡介 🎉🎉 XHan Admin 是一個開箱即用的開源中后臺管理系統基礎解決方案, 項目為前后端分離架構。采用最新的技術棧全新構建,純凈的項目代碼,沒有歷史包袱。 前端使用最新發布的 vite7.0 版本構建&#xf…

MySQL誤刪數據急救指南:基于Binlog日志的實戰恢復詳解

背景 數據誤刪是一個比較嚴重的場景 1.典型誤操作場景 場景1:DELETE FROM orders WHERE status0 → 漏寫AND create_time>‘2025-06-20’ 場景2:DROP TABLE customer → 誤執行于生產環境 認識 binlog 1.binlog 的核心作用 記錄所有 DDL/DML 操…

高效數據采集方案:快速部署與應用 AnyCrawl 網頁爬蟲工具實操指南

以下是對 AnyCrawl 的簡單介紹: AnyCrawl 提供高性能網頁數據爬取,其功能專為 LLM 集成和數據處理而設計支持利用搜索引擎直接查詢獲取結果內容,類似 searxng提供開發者友好的API,支持動態內容抓取,并輸出結構化數據&…

vue3可以分頁、搜索的select

下載 npm i v-selectpage基本使用 import { SelectPageList } from v-selectpage;<SelectPageListlanguage"zh-chs"key-prop"id"label-prop"name"fetch-data"fetchData" />const fetchData (data,callback) > {const { sea…

C# 入門學習教程 (一)

文章目錄 一、解決方案與項目1. Solution 與 project 二、類與名稱空間1.類與名稱空間2.類庫的引用1. DLL引用&#xff08;黑盒引用&#xff0c;無源代碼&#xff09;2. Nuget 引用3. 項目引用&#xff08;白盒引用&#xff0c;有源代碼&#xff09; 3.依賴關系 三、類&#xf…

76、單元測試-參數化測試

76、單元測試-參數化測試 參數化測試是一種單元測試技術&#xff0c;通過將測試數據與測試邏輯分離&#xff0c;使用不同的輸入參數多次運行相同的測試用例&#xff0c;從而提高測試效率和代碼復用性。 #### 基本原理 - **數據驅動測試**&#xff1a;將測試數據參數化&#xf…

SQL學習筆記3

SQL常用函數 1、字符串函數 函數調用的語法&#xff1a;select 函數&#xff08;參數); 常用的字符串函數有&#xff1a; 拼接字符串&#xff0c;將幾個字符串拼到一起&#xff1a;concat (s1,s2,……); select concat(你好,hello); update mytable set wherefo concat(中…

Golang 面向對象編程,如何實現 封裝、繼承、多態

Go語言雖然不是純粹的面向對象語言&#xff0c;但它通過結構體(struct)、接口(interface)和方法(method)提供了面向對象編程的能力。下面我將通過具體示例展示Go中如何實現類、封裝、繼承、多態以及構造函數等概念。 1. 類與封裝 在Go中&#xff0c;使用結構體(struct)來定義…

為什么android要使用Binder機制

1.linux中大多數標準 IPC 場景&#xff08;如管道、消息隊列、ioctl 等&#xff09;的進程間通信機制 ------------------ ------------------ ------------------ | 用戶進程 A | | 內核空間 | | 用戶進程 B | | (User Spa…

OpenCV CUDA模塊設備層-----雙曲余弦函數cosh()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于計算四維浮點向量&#xff08;float4類型&#xff09;的雙曲余弦值&#xff0c;作用于CUDA設備端。雙曲余弦函數定義為cosh(x) (e? …

48頁PPT | 企業數字化轉型關鍵方法論:實踐路徑、案例和落地評估框架

目錄 一、什么是企業數據化轉型&#xff1f; 二、為什么要進行數據化轉型&#xff1f; 1. 市場復雜性與不確定性上升 2. 內部流程效率與協同難題突出 3. 數字資產沉淀不足&#xff0c;智能化基礎薄弱 三、數據化流程管理&#xff1a;從“業務流程”到“數據流程”的對齊 …