各種卷積

從最開始的卷積層,發展至今,卷積已不再是當初的卷積,而是一個研究方向。在反卷積這篇博客中,介紹了一些常見的卷積的關系,本篇博客就是要梳理這些有趣的卷積結構。

閱讀本篇博客之前,建議將這篇博客結合在一起閱讀,想必會有更深的理解。另外,不管是什么類型的卷積,我們都把它理解成一種運算操作。

  1. Group convolution

Group convolution是最早應用在2012年Alexnet的雙GPU架構模型中,相當于把channel這一維度均分到兩個GPU,進行分組卷積。如圖所示:

?這篇論文是:ImageNet Classification with Deep Convolutional Neural Networks。由圖可見,上下兩個并行的網絡結構只有在部分層中才有信息交互,而且網絡結構一模一樣,這就是Group convolution最早的應用,但是在caffe中經常使用的單機多GPU并行訓練和上述問題存在本質區別,因為Group convolution是指將channel維度細分成多個group,然后再分組進行Convolution,而多GPU的訓練只是一個數據并行分組的方式,其中minibatch和batch之間的關系就是batch=minibatch*GPU_num,這并不存在對channel的分組。

總之,Group convolution是一種卷積操作,想要切分channel,然后分組卷積,運算上沒有什么特別的地方。

2.Pointwise convolution

點積,就是卷積核大小是1*1的,那為啥起名點積呢?就是因為這和向量中的點積運算很類似,舉個例子,一張3通道的feature map,卷積核大小是1*1*3,那它的運算其實就是:Σ卷積核*單通道feature map。

總之,Pointwise convolution是一種卷積操作,而且是一種特殊的卷積運算,代表著卷積核的大小是1*1。

3.Separable convolution

可分離卷積,這種思路其實就是起了個高深的名字,也很常見。也是想在channel維度上改變經典的卷積運算,咋辦呢?經典的卷積核都是k*k*channel大小的,其中channel是上一層的輸出即本層的輸入,這不太好,我們想任意指定一個channel,作為卷積核的大小,這樣并不影響輸入輸出的特征圖的長寬尺寸,僅僅改變了channel這一維度。這就變得很有意思了,同Group convolution不一樣的是,可分離卷積可增加channel維度,而并沒有依賴GPU。

舉個例子,對于經典的卷積運算,如果說所需的參數量為256*3*3*256=589824。而對于可分離卷積,假設我們指定的卷積核是3*3*4,那首先是256*3*3*4=9216,接下來我們得到了4*256=1024個通道數,但是呢?這并沒有完成,因為還需要下一個過程將channel重新壓縮回256,接著有1024*1*1*256=262144,整個過程就是9216+262144=271360,看看,589824是271360的兩倍多。雖然,這在很多框架上也許未能比較出效果的顯著差異,那是多方面的原因。

值得一提的是,上面舉的例子可以認為是Separable convolution 和Pointwise convolution結合在一起,事實上就是配套使用的。

最早的Separable convolution來源于論文:Simplifying ConvNets for Fast Learning,作者用的是k*1和1*k的卷積核,起名為可分離卷積,而本處的可分離卷積來源于另一篇論文:Xception: Deep Learning with Depthwise Separable Convolutions。

總之,Separable convolution是一種卷積操作,而且是一種特殊的卷積運算,代表著卷積核的channel維度可以自己任意選取。

4.Depthwise convolution

深度卷積,這名字又開始很高深了,其實它的意思就是拓展Separable?convolution而來,我們可以讓卷積核的channel維度等于1啊,這樣就是深度卷積,意為在每一個channel上做卷積。值得注意的是,往往Separable convolution和Depthwise convolution是統稱為Depthwise convolution。假設卷積核的shape是[filter_height, filter_width, in_channels, channel_multiplier],區別僅在于channel_multiplier,由于參考同一篇論文,此處將其統一。

這樣說來,前面的例子中其實就是Depthwise separable convolution = Depthwise convolution + Pointwise convolution,這就是深度可分離卷積的真正內涵。這也就是以下論文的工作:Xception: Deep Learning with Depthwise Separable Convolutions

總之,Depthwise convolution是一種卷積操作,和Separable convolution一樣,表示對channel維度進行卷積的一種方式。

5.Dilated convolution

空洞卷積是解決pixel-wise輸出模型的一種常用的卷積方式。一種普遍的認識是,pooling下采樣操作導致的信息丟失是不可逆的,通常的分類識別模型,只需要預測每一類的概率,所以我們不需要考慮pooling會導致損失圖像細節信息的問題,但是做像素級的預測時(譬如語義分割),就要考慮到這個問題了。那么空洞卷積可以用下圖來說明:

(a)圖對應3x3的1-dilated convolution,就是典型的卷積(b)圖對應3x3的2-dilated convolution,實際的卷積kernel size還是3x3,但是空洞為1,相當于kernel的size為7x7,圖中只有紅色點的權重不為0,其余都為0,把3*3的感受野增大到了7*7。(c)圖是4-dilated convolution,能達到15x15的感受野。

也就是以下論文:Multi-scale context aggregation by dilated convolutions

總之,空洞卷積是卷積運算的一種方式,在于增大了感受野卻不丟失語義信息。

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

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

相關文章

springboot——kaptcha

導入包&#xff1a; <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 配置類&#xff1a; package com.now.community.community.config;import…

NLP復習資料(7)-機器翻譯、文本分類、情感分析

NLP復習資料國科大&#xff0c;宗老師《自然語言處理》課程復習筆記&#xff0c;個人整理&#xff0c;僅供參考。此部分為手稿&#xff0c;高清圖下載見鏈接&#xff1a;https://download.csdn.net/download/sinat_40624829/11662412

XMl文件解析讀取

DOM方式&#xff1a; http://www.w3schools.com/dom/dom_parser.asp

redis——對項目的一些優化方案

這是我們之前項目的業務流程&#xff0c;做一下簡單介紹。 登錄&#xff1a; 用戶輸入賬號、密碼、驗證碼。我們先判斷用戶輸入的驗證碼是不是我們session存的驗證碼&#xff0c;然后去查賬號密碼是否正確。 如果登錄成功&#xff0c;發送給用戶一張憑證&#xff08;ticket&a…

const的思考

const的思考 1、什么是const?常類型是指使用類型修飾符const說明的類型&#xff0c;常類型的變量或對象的值是不能被更新的。&#xff08;當然&#xff0c;我們可以偷梁換柱進行更新&#xff1a;&#xff09;2、為什么引入const&#xff1f;const 推出的初始目的&#xff0c;正…

深度模型壓縮論文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression

文章目錄1.摘要和背景1.1 摘要1.2 背景2.方法和貢獻2.1 方法2.2 貢獻3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望本系列是在閱讀深度神經網絡模型小型化方面論文時的筆記&#xff01;內容大部分從論文中摘取&#xff0c;也會有部分自己理解&#xff0c;有錯誤的…

NLP復習資料(8)-知識圖譜、信息抽取

NLP復習資料第16講—知識圖譜第17講-信息抽取&#xff08;知識圖譜生命周期中信息獲取的關鍵技術&#xff09;國科大&#xff0c;宗老師《自然語言處理》課程復習筆記&#xff0c;個人整理&#xff0c;僅供參考。第16講—知識圖譜 知識圖譜經典知識表示理論語義網資源描述框架…

Collection源碼閱讀

package java.util;import java.util.function.Predicate; import java.util.stream.Stream; import java.util.stream.StreamSupport;/*** 集合層次結構的根接口&#xff0c;一個集合表示一組對象&#xff0c;稱為元素* JDK不提供任何該接口的直接實現&#xff0c;JDK提供實現…

socket阻塞和非阻塞的區別

讀操作 對于阻塞的socket,當socket的接收緩沖區中沒有數據時,read調用會一直阻塞住,直到有數據到來才返 回。當socket緩沖區中的數據量小于期望讀取的數據量時,返回實際讀取的字節數。當sockt的接收緩沖 區中的數據大于期望讀取的字節數時,讀取期望讀取的字節數,返回實際讀…

深度模型壓縮論文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

文章目錄1.摘要和介紹1.1摘要部分2.背景和方法2.1 背景2.2 貢獻2.3 方法3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望本系列是在閱讀深度神經網絡模型小型化方面論文時的筆記&#xff01;內容大部分從論文中摘取&#xff0c;也會有部分自己理解&#xff0c;有錯誤…

架構分享--微博架構

先來分享下大神Tim Yang的關于微博的架構設計&#xff1a; 這里主要從 存儲和接口角度來講 對于大流量系統的架構設計&#xff0c;對于寫入方面是特別需要注意的&#xff0c;基本上現在遇到的系統都是對于主數據庫的寫入&#xff0c;然后對于從數據庫實現流量的分發。 對于存…

Pytorch(7)-自己設計神經網絡會遇到的問題

操作pytorch架構遇到的問題1.網絡參數初始化2.查看當前可學習參數3.增加可學習的參數4.參數優化函數Adagrad5.直接修改網絡梯度值6.optimizers.zero_grad()報錯7.tensor.detach() 和 tensor.data 的區別1.網絡參數初始化 在pytorch中&#xff0c;有自己默認初始化參數方式&…

Python里的OS模塊常用函數說明

Python的標準庫中的os模塊包含普遍的操作系統功能。如果你希望你的程序能夠與平臺無關的話&#xff0c;這個模塊是尤為重要的。即它允許一個程序在編寫后不需要任何改動&#xff0c;也不會發生任何問題&#xff0c;就可以在Linux和Windows下運行。 下面列出了一些在os模塊中比較…

深度模型壓縮論文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

文章目錄1.摘要和背景1.1 摘要1.2 背景2.方法和貢獻2.1 方法2.1.1 訓練過程2.1.2 loss介紹2.2 貢獻3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望主要貢獻&#xff1a;基于網絡蒸餾方法&#xff0c;提出了一種提升裁剪后模型的精度的方法&#xff01;將訓練時間大…

關系數據庫——基礎

數據庫系統概論 四個基本概念 數據&#xff1a;數據庫中存儲的基本對象&#xff0c;描述一個事物的符號記錄&#xff0c;數據和其語義不可分開說 數據庫&#xff08;DB&#xff09;&#xff1a;是長期儲存在計算機內、有組織的、可共享的大量數據的集合。 數據庫管理系統&a…

Python(27)-模塊

模塊、包1.模塊導入的方式2.使用as給模塊取一個別名&#xff08;大駝峰命名法&#xff09;3.從模塊中導入部分工具4.從模塊中導入全部工具5.模塊搜索順序6__name__7.包8.發布模塊、安裝模塊、卸載包9.pip安裝第三方模塊本系列博文來自學習《Python基礎視頻教程》筆記整理&#…

Wow6432Node

64 位版本 Windows 中的注冊表分為 32 位注冊表項和 64 位注冊表項。許多 32 位注冊表項與其相應的 64 位注冊表項同名,反之亦然。 64 位版本 Windows 包含的默認 64 位版本注冊表編輯器 (Regedit.exe) 可顯示 64 位和 32 位的 注冊表項。WOW64 注冊表重定向器為 32 位程序提供…

如何使用docker配置深度學習開發環境

文章目錄1.底層驅動的安裝1.1 操作系統的安裝1.2 顯卡驅動的安裝1.3 cuda的安裝2.使用docker配置深度學習開發環境2.1 docker的安裝2.2 nvidia_docker的安裝2.3 安裝過程中的問題2.3.1 docker和nvidia_docker的版本不匹配的問題。2.3.2 解決每次運行docker命令的時候要加sudo.2…

反射全解

反射的概念 反射的引入&#xff1a; Object obj new Student(); 若程序運行時接收到外部傳入的一個對象&#xff0c;該對象的編譯類型是Object&#xff0c;但程序又需要調用該對象運行類型的方法&#xff1a; 1.若編譯和運行類型都知道&#xff0c;使用 instanceof判斷后&…

MachineLearning(4)-核函數與再生核希爾伯特空間

核函數與再生核希爾伯特空間1.支持向量積-核函數2.一個函數為核函數的條件3.核函數與希爾伯特空間3.1希爾伯特空間-Hilbert空間1.支持向量積-核函數 核(kernel)的概念由Aizenman et al.于1964年引入模式識別領域&#xff0c;原文介紹的是勢函數的方法。在那之后&#xff0c;核…