2016-08-07 53 views
0

我試圖通過Torch參數化1D conv網絡。瞭解火炬中的時間卷積

比方說,我有一個名爲Tensordata是尺寸10 x 512的,在有10行和512列。因此,我想實現一個TemporalConvolution層的單個3層堆棧,然後是ReLU,然後是TemporalMaxPooling。我的分類問題是二元的,並且有一個相應的labels張量,它是10 x 1。讓我們假設已經寫入feval來遍歷datalabels中的每個row

這樣,問題是構造一個網可以從512列映射至1

documentation改編:

... 
model = nn.Sequential() 
model:add(nn.TemporalConvolution(inputFrameSize, outputFrameSize, kW, [dW])) 
model:add(nn.ReLU()) 
model:add(nn.TemporalMaxPooling(kW2, [dW2]) 
... 
criterion = nn.BCECriterion() 
... 

如下我已經參數化的,但以下不起作用:/

TemporalConvolution(512,1,3,1) 
ReLU()) 
TemporalMaxPooling(3, 1) 

它會拋出錯誤:2D or 3D(batch mode) tensor expected。因此,我試圖把它傳遞給網前重塑data

data = data:resize(1, 100, 512) 

但這引發錯誤:invalid input frame size


我可以看到錯誤涉及形狀數據進入卷積網,當然參數化過的。我被this post here弄得更加困惑,這似乎暗示的TemporalConvolution應該設置爲10而不是512

任何指導將不勝感激,至於如何建立1D conv網。


P.S.我已經用logisticRegression模型測試了腳本,並且運行該模型,所以問題純粹與conv net架構/數據的形狀有關。

回答

0

我猜你誤解了inputFrameSize的含義,它不是你輸入的seqlen,而是n_channels(例如,對於2D幻燈片中的512 * 512 RGB圖像,inputFrameSize應該是3而不是512)。