Reflection: Deep Learning with R-Ch5.4.1–5.4.2

imflorachen
5 min readApr 22, 2020

--

ch5.4.1–ch5.4.2

#### 5.4.1. Visualizing intermediate activations

* 顯示特徵圖,這些特徵圖由網絡中各種卷積和池化層在給定特定輸入的情況下輸出(層的輸出通常稱為其激活,即激活函數的輸出)。

* 這樣就可以了解如何將輸入分解為網絡學習到的不同過濾器。想使用三個維度來可視化要素地圖:寬度,高度和深度(channel)。 每個channel都編碼相對獨立的特徵,因此可視化這些特徵圖的正確方法是通過將每個channel的內容獨立地繪製為2D圖像。

* 為了提取要查看的要素地圖,將創建一個Keras模型,該模型以成批的圖像作為輸入,並輸出所有捲積和池化層的激活。

* 當輸入圖像輸入時,此模型將輸出原始模型中圖層激活的值。此例中,有一個輸入及八個輸出,一層激活一個輸出。

* 測試畫出第一層的第二個channel,此channel 似乎是邊緣檢測器

* 再試第七個channel,但是請注意每個人模型的channel可能會有所不同,因為卷積層學習到的特定過濾器不是確定的。它似乎在呈現貓眼的虹膜。

* 第一層充當各種邊緣檢測器的集合。在此階段,激活將保留初始圖片中幾乎所有的信息。

* 隨這越高層,激活變得越來越抽象,並且在視覺上難以解釋。 他們開始編碼更高層次的概念,例如“貓耳朵”和“貓眼”。較高的呈現方式會承載越來越少的有關圖像視覺內容的信息,而承載的信息越來越多與圖像的類別有關。

* 激活的稀疏度隨著層的深度而增加:在第一層中,所有濾鏡都由輸入圖像激活,但是在隨後的層中,某些濾鏡為空白。這意味著在輸入圖像中找不到由濾鏡編碼的圖案。

* 深度神經網絡有效地充當信息提煉管道,原始數據進入(在這種情況下為RGB圖片)並被重複轉換,從而過濾掉無關的信息(例如,圖像的特定視覺外觀),且有用的信息將被放大和精煉(例如,圖像的類別)。

#### 5.4.2. Visualizing convnet filters

* 檢視卷積網絡學習的過濾器的另一種簡便方法是顯示每個過濾器要響應的視覺模式。這可以通過在輸入空間中進行梯度上升來完成:從卷積輸入圖像開始,對卷積網絡的輸入圖像值應用梯度下降,以使特定濾波器的響應最大化。最終的輸入圖像將是所選濾鏡可最大響應的圖像。

* 過程:構建一個損失函數,以最大化給定卷積層中給定濾鏡的值,然後使用隨機梯度下降來調整輸入圖像的值,以最大化此激活值

* Keras 是高階語言,可以用很多互動式的函數。像是 k_gradients(), k_sqrt(), k_concatentate(), k_batch_flatten()

https://keras.rstudio.com/articles/backend.html

* iterate 是一個採用張量(作為大小為1的張量的列表)並返回兩個張量的列表的函數:損失值和梯度值。(listing 5.35)

  • Starts from a gray image with some noise
  • 讓我們將它們放到一個R函數中,該函數以圖層名稱和濾鏡索引作為輸入,並返回一個有效的圖像張量,該張量表示可最大程度地激活指定濾鏡的圖案。
  • 所得圖像張量是 shape 為(1,150,150,3)的浮點張量,其值可能不是[0,255]內的整數。 因此,您需要對該張量進行後處理,以將其轉變為可顯示的圖像。

--

--

imflorachen
imflorachen

Written by imflorachen

Hi i’m trying to write what i’ve learned from work or from books. Wish I could become a better data scientist.

No responses yet