2016-03-28 139 views
2

CNN似乎主要針對固定大小的輸入實施。現在我想用CNN來訓練一些不同大小的句子,有哪些常用的方法?如何使用CNN來訓練不同大小的輸入數據?

+0

始終將輸入掩蓋到數據集中的最大尺寸。 – alvas

+1

但我正在嘗試處理一些文章,其長度範圍從500到40,000 ...可能填充有點低效? –

回答

2

以下建議主要與CNN有關的計算機視覺(特別是用於識別),但也可能對您的域有所幫助:我會看看"Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition" by He et al.提出一個空間金字塔池圖層。

總體思路:CNN的卷積層(以及相關層,如池,本地響應規範化等)能夠處理可變大小的輸入。因此,可變尺寸輸入的問題向下傳播到需要具有固定尺寸的矢量的第一完全連接/內積層。他等人。建議在第一個完全連接層之前添加Spatial Pyramid Pooling Layer(本文詳細內容)。該層本身通過將最後一個卷積層(或隨後的池化或響應規範化層)的特徵映射分層劃分爲固定數量的分箱來工作。在這些垃圾箱內,通常會收集響應,創建一個固定大小的輸出(其大小取決於垃圾箱的層次和數量)。請參閱紙張的插圖。

該圖層已經基於Caffe實現,可在GitHub上獲得:ShaoqingRen/SPP_net

+0

這是關於可變大小輸入的一般概念的一個很好的答案,但它是關於計算機視覺,而問題是關於句子 – dvb

+1

是的,的確如此。這就是爲什麼我的意思是一個建議。自然地,遞歸神經網絡將是處理不同長度的句子/單詞的好模型。但是這個問題明確地詢問CNN。 CNN確實主要用於固定大小的輸入 - 獨立於應用程序域。在計算機視覺中,SPP圖層和類似的池化方法非常流行。這些想法是通用的,並不侷限於計算機視覺,只是發生在計算機視覺領域。 –

1

DynamicCNN - for Theano/Lasagne by Fréderic Godin是一種可能對句子建模更好的方法。它是基於一個由Nal Kalchbrenner,愛德華Grefenstette,菲爾Blunsom從2014年

引述提到論文的摘要命名"A Convolutional Neural Network for Modelling Sentences"紙:

的網絡使用動態K-最大池,一個全球性的池操作 超過線性序列。網絡處理長度不等的輸入句子,並且在能夠明確捕獲短期和長期關係的句子上誘導特徵圖。網絡 不依賴分析樹,並且很容易適用於任何 語言。我們在四個實驗中測試了DCNN:小規模二進制和 多級情感預測,六方問題分類和 遠程監控的Twitter情緒預測。網絡 在前三個任務中獲得了優異的性能,在最後一個任務中相對於最強基準的錯誤減少了25%,因此獲得了更好的性能。

我自己並沒有使用它,但它解決了SO上的另一個類似的sentences modeling problem

相關問題