L'unica funzione che posso trovare è per circonvoluzioni 2D described here ...come posso ottenere una convoluzione 1D in Theano
C'è una funzione ottimizzata 1D?
L'unica funzione che posso trovare è per circonvoluzioni 2D described here ...come posso ottenere una convoluzione 1D in Theano
C'è una funzione ottimizzata 1D?
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
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.
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
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.
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! –