如何在theano中获得一维卷积

How can I get a 1D convolution in theano

我能找到的唯一函数是二维卷积described here...

有优化过的一维函数吗?

看起来好像是in development。 我意识到我可以通过将宽度或高度指定为 1...

来使用 conv2d() 函数

对于函数conv2d(),参数image_shape采用长度为4的列表,包含:

([number_images,] height, width)

通过设置 height=1width=1 强制它进行一维卷积。

虽然我相信 theano 中没有 conv1d,但 Lasagne(theano 之上的神经网络库)有几个 Conv1D 层的实现。有些基于theano的conv2d函数,其中一个维度等于1,有些使用单点积或多点积。我会尝试所有这些,可能基于点积的性能会比 conv2dwidth=1 更好。

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

更具体一点,我发现这个很好用:

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' 可选。