2015-05-14 16 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'是可选的。