2017-09-04 33 views
1

有人可以告訴我什麼include_top = True在keras中定義模型時意味着什麼?在keras中定義模型(include_top = True)

我在Keras文檔中閱讀了這一行的含義。它說include_top:是否將完全連接的層包含在網絡的頂部。

我仍在尋找這行代碼的直觀解釋。

ResNet50(include_top=True) 

謝謝!

回答

2

這些模型大多數是一系列卷積層,然後是一個或幾個密集(或完全連接)層。

Include_top可讓您選擇是否需要最終稠密層。

  • 卷積層作爲特徵提取器工作。他們識別圖像中的一系列圖案,並且每個圖層都可以通過查看圖案模式來識別更復雜的圖案。

  • 的緻密層能夠以分類解釋發現模式:這個圖像包含貓,狗,汽車等

關於權重:

  • 的卷積層中的權重是固定大小的。它們是內核x過濾器的大小。例如:10個過濾器的3x3內核。卷積層不關心輸入圖像的大小。它只是進行卷積並根據輸入圖像的大小顯示最終的圖像。 (如果不清楚,請查找一些關於卷積的圖解教程)

  • 現在密集層中的權重完全取決於輸入大小。它是每個輸入元素的一個權重。所以這要求你的輸入總是相同的大小,否則你將不會有適當的學習權重。

因此,刪除最終密集層允許您定義輸入大小(請參閱文檔)。 (並且輸出尺寸會相應增加/減少)。

但是你失去了解釋/分類層。 (你可以根據你的任務添加你自己的)

+0

感謝您的明確解釋。 –

2

閱讀the documentation舍了一些燈,你也可以求助於the code。具有include_top=True意味着將在模型的末尾添加完全連接的層。如果您希望模型實際執行分類,這通常是您想要的。使用include_top=True,您可以指定參數classes(對於ImageNet,默認爲1000)。使用include_top=False,該模型可用於特徵提取,例如構建自動編碼器或在其上堆疊任何其他模型。請注意,input_shapepooling參數應僅在include_topFalse時指定。

+0

移除密集的圖層可以讓你輸入不同的形狀,因爲純粹的卷積圖層在內核大小之後具有權重而不是輸入。但輸出形狀將取決於輸入形狀。 –

+0

@Daniel你能更詳細地解釋一下嗎? –

+0

感謝您的明確解釋。 我很難理解單詞「top」背後的直覺。通過查看VGG16的體系結構,可以看到完全連接的層處於「底層」。 因此,「頂」這個詞是什麼意思? 謝謝! – cyberjoac