2015-05-14 15 views

回答

2

雖然我相信theano中沒有conv1d,但Lasagne(theano頂部的神經網絡庫)有幾個Conv1D層的實現。有些基於conv2d功能的theano其中一個維度等於1,一些使用單個或多個點產品。我會嘗試所有這些,可能是一個基於dot的產品將會比conv2dwidth=1更好。

https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py

+0

我剛剛調查了千層麪。這是一個偉大的圖書館!我一直在努力一點,對theano來說是新的,需要的語法。我認爲千層麪可能有助於指導我通過這個領域! –

3

看起來好像這是in development。 我已經意識到我可以通過指定任一高度或寬度1使用conv2d()功能...

對於函數conv2d(),參數image_shape取長度爲4的含列表:

([number_images,] height, width) 

由設置height=1width=1它迫使它進行一維卷積。

+1

這實際上就是千層麪在他們的conv1d層中所做的事情:https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py – Ishamael

3

只是要更具體一點,我發現這很好地工作:

conv2d = T.signal.conv.conv2d 

x = T.dmatrix() 
y = T.dmatrix() 
veclen = x.shape[1] 

conv1d_expr = conv2d(x, y, image_shape=(1, veclen), border_mode='full') 

conv1d = theano.function([x, y], outputs=conv1d_expr) 

border_mode = 'full'是可選的。