2015-05-14 25 views

risposta

2

Mentre credo che non ci sia conv1d in theano, Lasagne (una libreria di rete neurale su theano) ha diverse implementazioni del livello Conv1D. Alcuni sono basati sulla funzione conv2d di theano con una delle dimensioni uguali a 1, alcuni utilizzano prodotti a punti singoli o multipli. Vorrei provarli tutti, potrebbe essere un prodotto basato su dot che funzionerà meglio di conv2d con width=1.

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

+0

Ho appena studiato le lasagne. È una grande biblioteca! Ho faticato un po ', essere nuovo con Theano, con la sintassi richiesta. Penso che Lasagne potrebbe essere utile per guidarmi attraverso quell'area! –

3

Sembra che questo sia in development. Ho capito che si utilizza la funzione conv2d() specificando la larghezza o altezza 1 ...

Per la funzione conv2d(), il parametro image_shape prende una lista di lunghezza 4 contenente:

([number_images,] height, width) 

da impostando height=1 o width=1 lo forza in una convoluzione 1D.

+1

Questo è in realtà esattamente ciò che lasagne fa nel loro livello di conv1d: https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py – Ishamael

3

solo essere un po 'più specifico, ho trovato questo per funzionare bene:

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' è facoltativo.