日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

卷积神经网络(CNN,ConvNet)

發布時間:2023/11/28 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卷积神经网络(CNN,ConvNet) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

卷積神經網絡(CNN,ConvNet)
卷積神經網絡(CNN,有時被稱為 ConvNet)是很吸引人的。在短時間內,變成了一種顛覆性的技術,打破了從文本、視頻到語音等多個領域所有最先進的算法,遠遠超出了其最初在圖像處理的應用范圍。

CNN 由許多神經網絡層組成。卷積和池化這兩種不同類型的層通常是交替的。網絡中每個濾波器的深度從左到右增加。最后通常由一個或多個全連接的層組成:

圖 1 卷積神經網絡的一個例子

Convnets 背后有三個關鍵動機:局部感受野、共享權重和池化。

局部感受野
如果想保留圖像中的空間信息,那么用像素矩陣表示每個圖像是很方便的。然后,編碼局部結構,將相鄰輸入神經元的子矩陣連接成屬于下一層的單隱藏層神經元。這個單隱藏層神經元代表一個局部感受野。請注意,此操作名為“卷積”,此類網絡也因此而得名。

當然,可以通過重疊的子矩陣來編碼更多的信息。例如,假設每個子矩陣的大小是 5×5,并且將這些子矩陣應用到 28×28 像素的 MNIST 圖像。然后,就能夠在下一隱藏層中生成 23×23 的局部感受野。事實上,在觸及圖像的邊界之前,只需要滑動子矩陣 23 個位置。

定義從一層到另一層的特征圖。當然,可以有多個獨立從每個隱藏層學習的特征映射。例如,可以從 28×28 輸入神經元開始處理 MNIST 圖像,然后(還是以 5×5 的步幅)在下一個隱藏層中得到每個大小為 23×23 的神經元的 k 個特征圖。

共享權重和偏置
假設想要從原始像素表示中,獲得移除與輸入圖像中位置信息無關的相同特征的能力。一個簡單的直覺就是,對隱藏層中的所有神經元使用相同的權重和偏置。通過這種方式,每層將從圖像中學習到獨立于位置信息的潛在特征。

理解卷積的一個簡單方法是,考慮作用于矩陣的滑動窗函數。在下面的例子中,給定輸入矩陣 I 和核 K,得到卷積輸出。將 3×3 核 K(有時稱為濾波器或特征檢測器)與輸入矩陣逐元素地相乘,以得到輸出卷積矩陣中的一個元素。所有其他元素都是通過在 I 上滑動窗口獲得的:

圖 2 卷積運算的一個例子:用粗體表示參與計算的單元

在這個例子中,一觸及 I 的邊界就停止滑動窗口(所以輸出是 3×3)。或者,可以選擇用零填充輸入(以便輸出為 5×5),這是有關填充的選擇。

另一個選擇是,關于滑窗所采用的滑動方式的步幅。步幅可以是 1 或大于 1。大步幅意味著,核的應用更少,以及更小的輸出尺寸,而小步幅產生更多的輸出并保留更多的信息。

濾波器的大小、步幅和填充類型是超參數,可以在訓練網絡時進行微調。
TensorFlow中的ConvNet
在 TensorFlow 中,如果想添加一個卷積層,可以這樣寫:

參數說明如下:
? input:張量,必須是 half、float32、float64 三種類型之一。
? filter:張量必須具有與輸入相同的類型。
? strides:整數列表。長度是 4 的一維向量。輸入的每一維度的滑動窗口步幅。必須與指定格式維度的順序相同。
? padding:可選字符串為 SAME、VALID。要使用的填充算法的類型。
? use_cudnn_on_gpu:一個可選的布爾值,默認為 True。
? data_format:可選字符串為 NHWC、NCHW,默認為 NHWC。指定輸入和輸出數據的數據格式。使用默認格式 NHWC,數據按照以下順序存儲:[batch,in_height,in_width,in_channels]。或者,格式可以是 NCHW,數據存儲順序為:[batch,in_channels,in_height,in_width]。
? name:操作的名稱(可選)。

下圖提供了一個卷積的例子:

圖 3 卷積運算的例子
池化層
假設要總結一個特征映射的輸出。可以使用從單個特征映射產生的輸出的空間鄰接性,并將子矩陣的值聚合成單個輸出值,從而合成地描述與該物理區域相關聯的含義。

最大池化
一個簡單而通用的選擇是所謂的最大池化算子,輸出在區域中觀察到的最大輸入值。在 TensorFlow 中,如果想要定義一個大小為 2×2 的最大池化層,可以這樣寫:

參數說明如下:
? value:形狀為 [batch,height,width,channels] 和類型是 tf.float32 的四維張量。
? ksize:長度 >=4 的整數列表。輸入張量的每個維度的窗口大小。
? strides:長度 >=4 的整數列表。輸入張量的每個維度的滑動窗口的步幅。
? padding:一個字符串,可以是 VALID 或 SAME。
? data_format:一個字符串,支持 NHWC 和 NCHW。
? name:操作的可選名稱。

下圖給出了最大池化操作的示例:

圖 4 池化操作的一個例子
平均池化
另一個選擇是平均池化,它簡單地將一個區域聚合成在該區域觀察到的輸入值的平均值。

TensorFlow 可以實現大量的池化層,并在線提供了一個完整的列表(https://www.tensorflow.org/api_guides/python/nn#Pooling)。總之,所有池化操作不過是給定區域的匯總操作。

ConvNet總結
CNN 基本上是幾層具有非線性激活函數的卷積,以及將池化層應用于卷積的結果。每層應用不同的濾波器(成百上千個)。理解的關鍵是濾波器不是預先設定好的,而是在訓練階段學習的,以使得恰當的損失函數被最小化。已經觀察到,較低層會學習檢測基本特征,而較高層檢測更復雜的特征,例如形狀或面部。

由于有池化層,靠后的層中的神經元看到的更多的是原始圖像,因此,能夠編輯前幾層中學習的基本特征。

到目前為止,描述了 ConvNet 的基本概念。CNN 在時間維度上對音頻和文本數據進行一維卷積和池化操作,沿(高度×寬度)維度對圖像進行二維處理,沿(高度×寬度×時間)維度對視頻進行三維處理。對于圖像,在輸入上滑動濾波器會生成一個特征圖,為每個空間位置提供濾波器的響應。

換句話說,一個 ConvNet 由多個濾波器堆疊在一起,學習識別在圖像中獨立于位置信息的具體視覺特征。這些視覺特征在網絡的前面幾層很簡單,然后隨著網絡的加深,組合成更加復雜的全局特征。

總結

以上是生活随笔為你收集整理的卷积神经网络(CNN,ConvNet)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。