2017-02-15 67 views
2

我目前正在與keras合作,並希望可視化每個圖層的輸出。當有一個神經網絡輸出層的可視化時,如下面的例子,這是MNIST手寫數字識別。神經網絡圖層的輸出有哪些用途?

  1. 什麼樣的信息或見解確實從這些圖像
  2. 研究員增益是如何這些圖像解釋
  3. 如果你會選擇看層的輸出,你有什麼選擇標準?

非常感謝您的任何意見或建議。謝謝。

enter image description here

+0

你能提供有關您使用網絡和圖像的詳細信息您呈現:

圖片從借來的? –

+0

感謝您的評論。假設我正在嘗試使用VGG16預先訓練的模型對數字進行分類器手寫,並且我輸入了一個手寫數字的32x32圖像。上面的圖像是第10層的輸出,我可以通過查看該圖層的輸出得到關於第10層的哪些信息或見解?我不確定這是否有幫助..如果沒有,請告訴我可以提供的其他信息。 – matchifang

回答

3

前言:卷積網絡是施加到(步幅,這是出現在GIF)圖像的部分的過濾器的集合。如果圖像的給定子部分與過濾器匹配,則會生成真/假標籤。

Striding CNN

你看到的在您提供的圖片是不是這些可視化在我看來是如何工作的,因爲它們形象化CNN如何percieves的整體形象,在每一層,並有最好的表現只是那裏使用的一系列簡單的過濾器。這意味着它們都看起來非常相似。

下面是網絡的基本過濾器如何可能的更好的表示形式。其中一些將以直線觸發,另一些將在水平線上觸發。這也是你所鏈接的圖像顯示的內容,除了它在整個圖像上顯示在一個視覺上簡單的對象上,這使得它更難以理解。 當你得到更復雜的過濾器,這些過濾器建立在這些基本過濾器之上時,可能會更好地顯示整個圖像。

Simple convolutional filters

還有一個概念叫做遷移學習,在那裏你採取的是高度重視現有的廣義模型,並嘗試將這些應用到您的具體問題。這些模型往往需要進行調整,這可能意味着刪除一些不需要的圖層(因爲我們保留的每個圖層意味着訓練通常會更費時),和/或添加更多圖層。

研究人員將能夠更好地解釋網絡中的每個層如何構建在以前的層上,以及他們如何爲解決手頭問題做出貢獻。這通常是基於直覺,感覺(這可以通過良好的視覺效果被簡化,如本deep visualization toolbox video

舉個例子,假設我使用VGG16,這是受過訓練的image-net一個通用模型的名稱。我想改變它來對不同類別的傢俱進行分類,而不是將其最初打算分類的完全不同的1000個類別分類。因爲它是一個通用的模型,它可以識別許多不同的事物,從人類到動物,到汽車,再到傢俱。但是很多這些東西對我來說沒有任何意義,因爲它們並不能真正幫助我對傢俱進行分類。

由於我們對這些類所做的最重要的發現發生在網絡中的不同層次上,因此我可以移回卷積層,並刪除所有對於我的任務來說似乎過於複雜的事情這樣做。這可能意味着我刪除了一些似乎專門對人的特徵進行分類的圖層,例如耳朵,嘴巴,眼睛和臉部。

據我所知,人們可以看到儘可能多的圖層,然後通常會根據本能做出判斷,然後在哪些圖層保留或丟棄。

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks

+0

謝謝你的回答。我目前想要的是功能圖。實際上,我想知道從特徵映射的可視化中可以得到什麼洞察力 - 你也許也有答案?此外,你認爲它會更有用嗎?可視化過濾器而不是功能圖?道歉,如果這個問題很愚蠢。我對神經網絡很陌生。 – matchifang

+0

明天我可能會添加更多信息。但是,您的功能圖本質上是您的其中一個篩選器的完成輸出。你想象的東西有點取決於你想要了解的東西。如果您想了解這些概念,以及CNN如何工作,我會說可視化過濾器。但對於實際工作,您可以直觀地看到從過濾器/圖層獲得的要素圖。我非常推薦看看我收錄的視頻。它很好地展示了這些地圖/濾鏡如何與海誓山盟交互。 – NegatioN