3

我已閱讀論文Visualizing and Understanding Convolutional Networks by Zeiler and Fergus,並希望利用他們的可視化技術。 這篇文章聽起來很有前途 - 但不幸的是,我不知道如何在Keras(版本1.2.2)中實現它。如何可視化keras中的中間要素圖層?

兩個問題:

  1. Keras只提供Deconvolution2D層,但沒有Unpooling並沒有 「扭轉RELU」 層。我怎樣才能利用論文中提到的開關變量來實現解耦? 我該如何使用反向ReLU(或者它只是「正常的」ReLU)?

  2. Keras Deconvolution2D圖層具有屬性activationsubsample。 也許這些是解決我的問題的關鍵? 如果是,我將不得不將所有圖層組合Convolution2D + Activation + Pooling與單個Deconvolution2D圖層替換,對不對?

我很感謝您的幫助!

回答

1

你引用的論文的作者(據我記得)如何處理這種簡單介紹,具體如下:

  1. RELU。 ReLU的倒數是... ReLU。由於卷積應用於正向通道中的激活函數,因此應對反向通道中的整流重建應用解卷積。
  2. 合併。嚴格來說,沒有辦法徹底顛倒池。爲了引用這篇論文,「我們可以通過在一組開關變量中記錄每個池區內最大值的位置來獲得一個近似的倒數,在deconvnet中,解卷操作使用這些開關將來自上層的重建放置到適當的位置保留刺激的結構。「

現在,接近實際實施和凱拉斯,看看this thread - 你會發現有一些例子,你可以立即使用。

+0

感謝您的回答!不幸的是,我仍然不明白如何實現這篇論文(我嘗試了你給定的鏈接,並試圖通過反覆試驗來使用Devoncolution2D,但結果只是完全是紅色的圖像(colormap = jet)) 。這篇論文會導致一些很好的可視化...... –

+0

在你的問題中你問的是如何做到這一點 - 我提供了一個答案。很難評論爲什麼你所有的圖片都是紅色的 - 這是實現問題。正如所解釋的,ReLU - > ReLU的反轉,雖然提供了鏈接,但具有用於取消折疊的代碼片段。 –

+0

是的,我明白了。我在Reconvolution2D圖層中使用了ReLU作爲激活函數。 另外,我使用子樣本進行取樣。 我會保持滾動並分享我的解決方案(如果我成功)。 –