卷積詳解和并行卷積

ps:在 TensorFlow Keras 中,構建 Sequential 模型的正確方式是將層作為列表傳遞,而不是作為一系列單獨的參數。
model=models.Sequential([layers,layers])
而不是model=models.Sequential(layers,layers)

文章目錄

  • 卷積操作及其計算過程的詳細解釋
    • 卷積的基本操作
      • 1. 卷積核(Convolution Kernel)
        • 卷積核如何提取特征
      • 2. 卷積過程
        • 卷積的數學表示
        • 簡單例子
        • 輸出尺寸的計算
      • 3.卷積矩陣在深度訓練中的改變過程
        • 卷積核的調整過程
          • 1. 初始化
          • 2. 前向傳播
          • 3. 反向傳播和卷積核的更新
          • 4. 迭代過程
        • 卷積核的角色
  • 并行卷積結構和深度可分離卷積的詳細數學解釋
    • 并行卷積結構:Inception 模塊
      • 概念
      • 數學表示
      • 簡單例子
        • 輸出尺寸的計算
        • 為什么不同的卷積大小產生相同的尺寸輸出
      • 代碼

卷積操作及其計算過程的詳細解釋

卷積是深度學習中用于圖像和信號處理的一種基本數學操作。它通過應用卷積核(或過濾器)到輸入數據上,來提取重要特征。

卷積的基本操作

1. 卷積核(Convolution Kernel)

  • 卷積核是一個小的矩陣(通常是2D),用于通過濾過輸入數據來提取特定特征。
卷積核如何提取特征
  • 邊緣檢測:例如,卷積核 K = [ ? 1 0 1 ? 1 0 1 ? 1 0 1 ] K = \begin{bmatrix}-1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1\end{bmatrix} K= ??1?1?1?000?111? ? 被用于邊緣檢測。這個特定的卷積核可以突出水平方向的邊緣。它通過計算左側像素與右側像素的差異來工作,這種差異在邊緣處最大。

  • 紋理和模式識別:不同的卷積核可以識別不同的紋理和模式。例如,對于識別特定方向的紋理,卷積核會有特定的方向性。

在實際應用中,通常不是手動設計這些卷積核,而是通過訓練過程讓神經網絡自行學習最優的卷積核,以適應特定的任務和數據。

2. 卷積過程

  • 將卷積核放在輸入數據的左上角。
  • 將卷積核的每個元素與其覆蓋的輸入數據元素相乘,然后將結果求和,得到輸出特征圖的一個元素。
  • 將卷積核向右滑動一個步長(Stride),重復上述過程,直到覆蓋整個輸入數據。
卷積的數學表示

卷積操作可以表示為:

S ( i , j ) = ( I ? K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i ? m , j ? n ) S(i, j) = (I \ast K)(i, j) = \sum_m \sum_n I(m, n) K(i-m, j-n) S(i,j)=(I?K)(i,j)=m?n?I(m,n)K(i?m,j?n)

其中, I I I 是輸入圖像, K K K 是卷積核, S S S 是輸出特征圖, i i i j j j 表示特征圖上的位置。

  • 以一個 3 × 3 3 \times 3 3×3 的卷積核為例,應用于一個二維輸入數據(如圖像):

    S ( i , j ) = ∑ m = 0 2 ∑ n = 0 2 I ( i + m , j + n ) K ( m , n ) S(i, j) = \sum_{m=0}^{2} \sum_{n=0}^{2} I(i+m, j+n) K(m, n) S(i,j)=m=02?n=02?I(i+m,j+n)K(m,n)

    其中 I I I 是輸入數據, K K K 是卷積核, S S S 是輸出特征圖, i i i j j j 是特征圖上的位置。

簡單例子

假設輸入數據是一個 4 × 4 4 \times 4 4×4 的矩陣,卷積核是一個 3 × 3 3 \times 3 3×3 的矩陣,如下所示:
輸入數據 I:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

卷積核 K:
-1 0 1
-1 0 1
-1 0 1

  • 將卷積核放在輸入數據的左上角,計算卷積(不考慮步長和填充):

S(0, 0) = (1*-1 + 20 + 31) + (5*-1 + 60 + 71) + (9*-1 + 100 + 111)
= -1 + 0 + 3 - 5 + 0 + 7 - 9 + 0 + 11
= 7

  • 將卷積核向右滑動一個步長,并重復計算。
輸出尺寸的計算

輸出尺寸取決于輸入尺寸、卷積核尺寸、步長和填充:

Output?Size = Input?Size ? Filter?Size + 2 × Padding Stride + 1 \text{Output Size} = \frac{\text{Input Size} - \text{Filter Size} + 2 \times \text{Padding}}{\text{Stride}} + 1 Output?Size=StrideInput?Size?Filter?Size+2×Padding?+1

在不使用填充且步長為1的情況下,上述例子中的輸出尺寸將是 2 × 2 2 \times 2 2×2

3.卷積矩陣在深度訓練中的改變過程

在深度學習中,卷積矩陣(或稱為卷積核、過濾器)是通過訓練過程逐漸調整以優化特征提取的。這個調整過程是通過反向傳播算法和梯度下降方法實現的。

卷積核的調整過程
1. 初始化
  • 初始化:開始訓練時,卷積核的權重通常被初始化為隨機小數值。
2. 前向傳播
  • 提取特征:在訓練過程中,卷積核在前向傳播階段通過卷積操作提取輸入數據的特征。
    前向傳播是數據通過神經網絡的過程,其中的每一步如下:
    1. 數據輸入:原始數據輸入網絡。
    2. 卷積操作:數據通過卷積層,卷積核應用于數據。
    3. 激活函數:卷積的結果通過激活函數,如ReLU。
    4. 池化:可選步驟,應用池化(如最大池化)降低維度。
    5. 輸出生成:通過全連接層生成最終輸出。
3. 反向傳播和卷積核的更新

卷積核的更新發生在反向傳播過程中,該過程如下:

  1. 損失計算:計算預測輸出和實際輸出之間的差異(損失)。
  • 損失函數衡量模型預測與實際標簽之間的差距。常用的損失函數包括均方誤差(MSE)和交叉熵損失。

  • 假設有實際值 y y y 和預測值 y ^ \hat{y} y^?,MSE 計算公式為:

    MSE = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1?i=1n?(yi??y^?i?)2

    其中 n n n 是樣本數量。

  1. 梯度計算:通過反向傳播算法計算損失函數相對于卷積核權重的梯度。
  • 對于每個權重 W W W,損失函數的梯度計算為:

    ? Loss ? W = ? Loss ? y ^ × ? y ^ ? W \frac{\partial \text{Loss}}{\partial W} = \frac{\partial \text{Loss}}{\partial \hat{y}} \times \frac{\partial \hat{y}}{\partial W} ?W?Loss?=?y^??Loss?×?W?y^??

  1. 權重更新:根據梯度和學習率更新卷積核的權重。更新公式為:

W new = W old ? η × ? Loss ? W W_{\text{new}} = W_{\text{old}} - \eta \times \frac{\partial \text{Loss}}{\partial W} Wnew?=Wold??η×?W?Loss?

其中 W W W 是卷積核權重, η \eta η 是學習率, ? Loss ? W \frac{\partial \text{Loss}}{\partial W} ?W?Loss? 是損失函數相對于 W W W 的梯度。

示例:單層神經網絡

  • 假設有一個單層網絡,輸出 y ^ = W x + b \hat{y} = Wx + b y^?=Wx+b,損失函數是 MSE。

  • 損失對 W W W 的梯度為:

    ? Loss ? W = 2 n ∑ ( y ? y ^ ) × ( ? x ) \frac{\partial \text{Loss}}{\partial W} = \frac{2}{n} \sum (y - \hat{y}) \times (-x) ?W?Loss?=n2?(y?y^?)×(?x)

  • 在反向傳播中,這個梯度用于更新 W W W

4. 迭代過程
  • 重復迭代:這個過程在多個訓練周期(epoch)中重復進行,直到模型性能達到預定的標準或者停止改進。
卷積核的角色
  • 在訓練過程中,卷積核逐漸學習到如何有效地提取輸入數據的關鍵特征,這些特征對于完成特定的深度學習任務(如圖像分類、物體檢測等)至關重要。

并行卷積結構和深度可分離卷積的詳細數學解釋

并行卷積結構:Inception 模塊

概念

  • Inception 模塊是一種在同一網絡層上并行應用多種不同尺寸卷積核的結構。
  • 它允許網絡在單一層級上捕獲多尺度特征。

數學表示

假設輸入特征圖為 X X X,Inception 模塊中的不同分支可以表示如下:

  1. 1 × 1 1 \times 1 1×1 卷積分支
    Y 1 = Conv 1 × 1 ( X ) Y_1 = \text{Conv}_{1 \times 1}(X) Y1?=Conv1×1?(X)
    這里, Conv 1 × 1 \text{Conv}_{1 \times 1} Conv1×1? 表示 1 × 1 1 \times 1 1×1 卷積,用于捕獲局部特征。

  2. 3 × 3 3 \times 3 3×3 卷積分支
    Y 2 = Conv 3 × 3 ( X ) Y_2 = \text{Conv}_{3 \times 3}(X) Y2?=Conv3×3?(X)
    3 × 3 3 \times 3 3×3 卷積能捕獲更廣泛的空間特征。

  3. 5 × 5 5 \times 5 5×5 卷積分支
    Y 3 = Conv 5 × 5 ( X ) Y_3 = \text{Conv}_{5 \times 5}(X) Y3?=Conv5×5?(X)
    5 × 5 5 \times 5 5×5 卷積提供了更大范圍的感受野。

這些分支的輸出被沿深度方向合并,生成綜合特征映射 Y Y Y
Y = [ Y 1 , Y 2 , Y 3 ] Y = [Y_1, Y_2, Y_3] Y=[Y1?,Y2?,Y3?]

簡單例子

考慮一個 224 × 224 × 3 224 \times 224 \times 3 224×224×3 的圖像作為輸入 X X X。Inception 模塊中的 1 × 1 1 \times 1 1×1 卷積可能產生 224 × 224 × 64 224 \times 224 \times 64 224×224×64 的輸出 Y 1 Y_1 Y1? 3 × 3 3 \times 3 3×3 卷積產生相同尺寸的輸出 Y 2 Y_2 Y2?,而 5 × 5 5 \times 5 5×5 卷積也產生相同尺寸的輸出 Y 3 Y_3 Y3?。合并這些輸出,我們得到一個 224 × 224 × 192 224 \times 224 \times 192 224×224×192 的特征映射 Y Y Y

輸出尺寸的計算

輸出特征圖的尺寸取決于幾個因素:

  • 輸入尺寸:輸入圖像的尺寸。
  • 卷積核尺寸:卷積核的大小。
  • 步長(Stride):卷積核在輸入上滑動的步長。
  • 填充(Padding):在輸入周圍添加的零的層數。

輸出尺寸的計算公式為:

Output?Size = Input?Size ? Filter?Size + 2 × Padding Stride + 1 \text{Output Size} = \frac{\text{Input Size} - \text{Filter Size} + 2 \times \text{Padding}}{\text{Stride}} + 1 Output?Size=StrideInput?Size?Filter?Size+2×Padding?+1

為什么不同的卷積大小產生相同的尺寸輸出

在前面的例子中, 1 × 1 1 \times 1 1×1 3 × 3 3 \times 3 3×3 5 × 5 5 \times 5 5×5 的卷積產生了相同尺寸的輸出,這是因為:

  1. 步長和填充的調整:通過調整步長和填充,可以使不同大小的卷積核產生相同尺寸的輸出。通常,較大的卷積核會使用更多的填充來保持輸出尺寸不變。

  2. 保持特征圖空間分辨率:這種做法使得并行的卷積分支可以在深度方向上直接合并,因為它們具有相同的空間維度。

所以假設輸入尺寸為 224 × 224 224 \times 224 224×224,卷積核尺寸分別為 1 × 1 1 \times 1 1×1 3 × 3 3 \times 3 3×3 5 × 5 5 \times 5 5×5,步長為 1,并且對于 3 × 3 3 \times 3 3×3 5 × 5 5 \times 5 5×5 卷積使用適當的填充(分別為 1 和 2)來保持輸出尺寸不變。根據上述公式,所有這些卷積操作將產生 224 × 224 224 \times 224 224×224 的輸出特征圖。

代碼

import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, Concatenate
from tensorflow.keras.models import Model# 定義一個函數來創建并行卷積層
def parallel_convolution(input_tensor):# 1x1 卷積conv_1x1 = Conv2D(filters=64, kernel_size=(1, 1), padding='same', activation='relu')(input_tensor)# 3x3 卷積conv_3x3 = Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu')(input_tensor)# 5x5 卷積conv_5x5 = Conv2D(filters=64, kernel_size=(5, 5), padding='same', activation='relu')(input_tensor)# 合并不同尺寸卷積的結果output = Concatenate()([conv_1x1, conv_3x3, conv_5x5])return output# 輸入層
input_layer = Input(shape=(224, 224, 3))# 應用并行卷積層
output_layer = parallel_convolution(input_layer)# 創建模型
model = Model(inputs=input_layer, outputs=output_layer)# 查看模型概況
model.summary()

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

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

相關文章

Redis 基礎—Redis Desktop Manager(Redis可視化工具)安裝及使用教程

Redis Desktop Manager 是一個可視化的 Redis 數據庫管理工具,可以方便地查看和操作 Redis 數據庫。使用 Redis Desktop Manager 可以大大提高 Redis 數據庫的管理效率。 RDM的安裝和配置 首先,您需要下載和安裝Redis Desktop Manager。 安裝完成后&am…

Python 小紅書評論區采集 小紅薯xhs精準用戶獲客

成品圖 評論接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/page?note_id筆記id&cursor光標 初次使用cursor為空,該接口為GET,需要x-s,x-t簽名驗證 子評論接口https://edith.xiaohongshu.com/api/sns/web/v2/comment/sub/page?note_id%s&r…

python爬取robomaster論壇文章數據,攜帶登錄信息

一. 內容簡介 python爬取robomaster論壇文章數據。 二. 軟件環境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代碼 三.主要流程 3.1 接口分析,以及網頁結構分析 # 這是文章鏈接,其實id就是文章的id # https://bbs.robomaster.com/forum.php?modview…

win系統一臺電腦安裝兩個不同版本的mysql教程

文章目錄 1.mysql下載zip包(地址)2.解壓在你的電腦上(不要再C盤和帶中文的路徑)3.創建my.ini文件4.更改環境變量(方便使用, 可選)5.打包mysql服務6.初始化mysql的data7.啟動剛剛打包的服務8.更改密碼 1.mys…

CentOS常用基礎命令大全(linux命令)2

CentOS常用基礎命令大全(linux命令) 1.關機 (系統的關機、重啟以及登出 ) 的命令 shutdown -h now 關閉系統(1) init 0 關閉系統(2) telinit 0 關閉系統(3) shutdown -h hours:minutes & 按預定時間關閉系統 shutdown -c 取消按預定時間關閉系統 sh…

【無標將列表中的多組參數依次帶入指定的函數將每次調用函數返回結果組成列表itertools.starmap()題】

【小白從小學Python、C、Java】 【計算機等考500強證書考研】 【Python-數據分析】 將列表中的多組參數 依次帶入指定的函數 將每次調用函數 返回結果組成列表 itertools.starmap() [太陽]選擇題 請問以下代碼輸出的結果是? import itertools a [(1, 2), (3, 4)] p…

基于JAVA+SpringBoot+Vue的前后端分離的醫院信息智能化HIS系統

?全網粉絲20W,csdn特邀作者、博客專家、CSDN新星計劃導師、java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? 🍅文末獲取項目下載方式🍅 一、項目背景介紹: 隨著科技的不斷發展&a…

解決Ubuntu16.04沒聲音

第一步:安裝 PulseAudio Volum Control Ubuntu沒有聲音(聽不到聲音)的解決方法 第二步:No cards available for configuration 【解決Ubuntu18.04沒聲音:No cards available for configuration】 完美解決&#xf…

【WPF.NET開發】WPF中的對話框

目錄 1、消息框 2、通用對話框 3、自定義對話框 實現對話框 4、打開對話框的 UI 元素 4.1 菜單項 4.2 按鈕 5、返回結果 5.1 模式對話框 5.2 處理響應 5.3 非模式對話框 Windows Presentation Foundation (WPF) 為你提供了自行設計對話框的方法。 對話框是窗口&…

浙政釘SDK安裝

專有訂單SDK&#xff08;jar包&#xff09;下載 專有釘釘門戶 (dg-work.cn) Maven依賴 浙政釘 <!-- 浙政釘 --> <dependency><groupId>com.oracel</groupId><artifactId>zwdd-sdk-java</artifactId><version>1.2.0</version…

概率密度函數(PDF)正態分布

概率密度函數&#xff08;PDF&#xff09;是一個描述連續隨機變量取特定值的相對可能性的函數。對于正態分布的情況&#xff0c;其PDF有一個特定的形式&#xff0c;這個形式中包括了一個常數乘以一個指數函數&#xff0c;它假設誤差項服從均值為0的正態分布&#xff1a; p ( …

外匯天眼:新西蘭監管機構永久性停止對David McEwen及與其相關的實體的命令

新西蘭金融市場管理局&#xff08;FMA&#xff09;已對David Elgar McEwen及與其相關的實體&#xff08;McEwen and Associates&#xff09;發布了永久性停止令。 與McEwen先生相關的實體包括Stockfox Limited、Cosmopolitan Holdings Limited、Strategy Services Limited、Fun…

Ubuntu系統使用快速入門實踐(七)——軟件安裝與使用(3)

Ubuntu系統使用快速入門實踐系列文章 下面是Ubuntu系統使用系列文章的總鏈接&#xff0c;本人發表這個系列的文章鏈接均收錄于此 Ubuntu系統使用快速入門實踐系列文章總鏈接 下面是專欄地址&#xff1a; Ubuntu系統使用快速入門實踐系列文章專欄 文章目錄 Ubuntu系統使用快速…

在uniapp中,可以使用那些預定義的樣式類

u-flex&#xff1a;設置元素為彈性布局。u-flex-v&#xff1a;設置元素為縱向彈性布局。u-flex-h&#xff1a;設置元素為橫向彈性布局。u-p-10&#xff1a;設置元素的上下左右邊距為10rpx。u-p-t-10&#xff1a;設置元素的上邊距為10rpx。u-p-b-10&#xff1a;設置元素的下邊距…

教育心得整理

壓抑使人反抗&#xff0c;反抗就是報復&#xff0c;報復就會引起犯罪。要消滅犯罪&#xff0c;我們必須杜絕引起孩子報復心理的行為&#xff0c;更重要的是&#xff0c;我們一定要對孩子表現出來愛與尊重 限制批評的次數限制每次批評的范圍限制每次批評的強度 當彼此的信任和…

第一百九十五回 連接藍牙設備的細節

文章目錄 1. 概念介紹2. 實現方法2.1 示例代碼2.2 知識回顧2.3 實現方法3. 示例代碼我們在上一章回中介紹了"分享三個使用TextField的細節"沉浸式狀態樣相關的內容,本章回中將介紹SliverList組件.閑話休提,讓我們一起Talk Flutter吧。 1. 概念介紹 我們在本章回中…

機器學習之無監督學習:九大聚類算法

今天&#xff0c;和大家分享一下機器學習之無監督學習中的常見的聚類方法。 今天&#xff0c;和大家分享一下機器學習之無監督學習中的常見的聚類方法。 在無監督學習中&#xff0c;我們的數據并不帶有任何標簽&#xff0c;因此在無監督學習中要做的就是將這一系列無標簽的數…

Spring Cloud Gateway中對admin端點進行認證

前言 我們被掃了一個漏洞&#xff0c;SpringBoot Actuator 未授權訪問&#xff0c;漏洞描述是這樣的&#xff1a; Actuator 是 springboot 提供的用來對應用系統進行自省和監控的功能模塊&#xff0c;借助于 Actuator 開發者可以很方便地對應用系統某些監控指標進行查看、統計…

計算機基礎知識65

cookie和session的使用 # 概念&#xff1a;cookie 是客戶端瀏覽器上的鍵值對 # 目的&#xff1a;為了做會話保持 # 來源&#xff1a;服務端寫入的&#xff0c;服務端再返回的響應頭中寫入&#xff0c;瀏覽器會自動取出來 存起來是以key value 形式&#xff0c;有過期時間、path…

STM32單片機項目實例:基于TouchGFX的智能手表設計(3)嵌入式程序任務調度的設計

STM32單片機項目實例&#xff1a;基于TouchGFX的智能手表設計&#xff08;3&#xff09;嵌入式程序任務調度的設計 目錄 一、嵌入式程序設計 1.1輪詢 1.2 前后臺&#xff08;中斷輪詢&#xff09; 1.3 事件驅動與消息 1.3.1 事件驅動的概念 1.4 定時器觸發事件驅動型的任…