點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅乾貨,第一時間送達
文 |AI_study
今天是《高效入門Pytorch》的第三篇文章,上一篇我們講解到《深度學習中關於張量的階、軸和形狀的解釋》。
在這篇文章中,我們將看一個實際的例子,它演示了張量中 階、軸和形狀的使用。
爲此,我們將考慮卷積神經網絡的張量輸入。不多BB,我們開始搞起吧。
卷積神經網絡
在這個神經網絡編程系列中,我們正在努力構建卷積神經網絡(CNN),所以讓我們看看在CNN中的張量輸入。
在前兩篇文章中,我們介紹了張量和張量的基本屬性——階、軸和形狀。如果你還沒看過那些帖子,我強烈建議你去看看。
我現在要做的是把階、軸和形狀的概念用在一個實際的例子中。爲此,我們將把圖像輸入看作CNN的張量。
卷積神經網絡是圖像識別任務的首選網絡,因爲它非常適合於檢測空間圖案(spacial patterns)。
注意,張量的形狀 編碼了關於張量軸、階和索引的所有相關信息,因此我們將在示例中考慮該形狀,這將使我們能夠計算出其他值。下面開始詳細講解。
CNN輸入的形狀
CNN輸入的形狀通常長度爲4。這意味着我們有一個4階張量(有四個軸的)。張量形狀中的每個指標代表一個特定的軸,每個指標的值給出了對應軸的長度。
張量的每個軸通常表示輸入數據的某種物理含義(real world)或邏輯特徵。如果我們瞭解這些特徵中的每一個以及它們在張量中的軸位置,那麼我們就可以對張量數據結構有一個很好的總體理解。
爲了分解這個,我們將從後往前推敲,考慮從右到左的軸。記住,最後一個軸,也就是我們要開始的軸,是實際數字或數據值所在的軸。
如果我們沿着最後一個軸運行,停下來檢查一個元素,我們將看到一個數字。如果我們沿着任何其他軸運行,元素是多維數組。
對於圖像而言,原始數據以像素的形式出現,像素由數字表示,並使用兩個維尺寸(高度和寬度)進行排列。
圖片的高和寬
爲了表示兩個維度,我們需要兩個軸。
圖像的高度和寬度在最後兩個軸上表示。可能的值是28 x 28,就像我們將在CNN項目中使用的fashion-MNIST數據集中的圖像數據一樣,或是VGG16神經網絡使用的224 x 224圖像大小,或者我們可以想象的其他圖像尺寸。
圖片的顏色通道(Image Color Channels)
下一個軸(第二個軸)代表顏色通道。對於RGB圖像,此處的通常值爲3;如果使用灰度圖像,則通常值爲1。此顏色通道的解釋僅適用於輸入張量。
稍後我們將揭示,在張量通過卷積層之後,解釋此軸會發生變化。
到現在爲止,使用最後三個軸,我們已將完整圖像表示爲張量。我們使用三個軸以張量形式排列了顏色通道以及高度和寬度。
就訪問數據方面而言,我們需要三個索引。我們選擇顏色通道,高度和寬度以獲取特定的像素值。
圖片批次(Image Batches)
這將引出四個軸中的第一個軸,用來代表批次大小。在神經網絡中,我們通常都是批量處理樣本,而不是隻處理單個樣本,因此該軸的長度告訴我們該批次中有多少個樣本。
這使我們看到可以使用一個4階張量表示一整個批次的圖片。
假設對於給定的張量,我們具有以下形狀[3,1,28,28]。使用該形狀,我們可以確定我們有這個批次是含有三張圖片。
[Batch, Channels, Height, Width]
每張圖片都有一個顏色通道,圖像的高度和寬度分別爲28 x 28。
批次大小(Batch size)
色彩通道(Color channels)
高度(Height)
寬度(Width)
這個給了我們一個4階張量,該張量最終將流向卷積神經網絡。
給定一個代表一批圖片的張量(類似於上面),我們能使用四個索引定位到一批圖片中特定圖片的特定通道的特定像素值。
輸出通道和特徵圖
讓我們看一下在通過卷積層轉換後,張量顏色通道軸是如何變化的解釋。
假設我們有一個張量,其中包含來自單張28 x 28灰度圖片的數據。這爲我們提供了以下張量形狀:[1,1,28,28]。
現在,假設此圖像傳遞到我們的CNN並通過第一個卷積層。發生這種情況時,卷積操作將改變張量的形狀和基礎數據。
卷積操作會改變高度和寬度尺寸以及通道數。輸出通道的數量是根據卷積層中使用的濾波器的數量而變化。
假設我們有三個卷積濾波器,讓我們看看通道軸發生了什麼。
由於我們有三個卷積濾波器,因此我們將從卷積層獲得三個通道輸出。這些通道是卷積層的輸出,因此命名爲輸出通道而不是顏色通道。
三個濾波器中的每一個都對原始的單個輸入通道進行卷積,從而產生三個輸出通道。輸出通道仍由像素組成,但是像素已通過卷積操作進行了修改。根據濾波器的大小,輸出的高度和寬度尺寸也會發生變化,但是我們將在以後的文章中討論這些細節。
特徵圖(Feature Maps)
對於輸出通道,我們不再擁有顏色通道,而是修改過的通道,我們稱之爲feature maps。這些所謂的特徵圖是使用輸入顏色通道和卷積過濾器進行卷積的輸出。
Feature maps are the output channels created from the convolutions.
之所以使用“特徵”這個詞,是因爲輸出代表了圖片的特定特徵,比如邊緣,這些映射是在網絡在訓練過程中學習的過程中出現的,並且隨着我們深入網絡而變得更加複雜。
總結
現在我們應該很好地理解了CNN輸入張量的整體形狀,以及階、軸和形狀的概念是如何應用。
當我們開始構建CNN時,我們將在以後的文章中加深對這些概念的理解。在那之前,我們下期再見!
文章中內容都是經過仔細研究的,本人水平有限,翻譯無法做到完美,但是真的是費了很大功夫,希望小夥伴能動動你性感的小手,分享朋友圈或點個“在看”,支持一下我 ^_^
英文原文鏈接是:
https://deeplizard.com/learn/video/k6ZF1TSniYk
加羣交流
歡迎小夥伴加羣交流,目前已有交流羣的方向包括:AI學習交流羣,目標檢測,秋招互助,資料下載等等;加羣可掃描並回復感興趣方向即可(註明:地區+學校/企業+研究方向+暱稱)
我的生活不能沒有你! ????