2015-05-14 7 views

Antwort

2

Während ich glaube, dass es keine conv1d in Theano gibt, hat Lasagne (eine neurale Netzwerkbibliothek oben auf theano) mehrere Implementierungen der Conv1D-Schicht. Einige basieren auf conv2d Funktion desano mit einer der Dimensionen gleich 1, einige verwenden einzelne oder mehrere dot-Produkte. Ich würde versuchen, alle von ihnen, möglicherweise ein Dot-Produkt basiert besser als conv2d mit width=1.

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

+0

Ich habe gerade Lasagne untersucht. Es ist eine großartige Bibliothek! Ich habe ein wenig gekämpft, war neu in theano, mit der erforderlichen Syntax. Ich denke, Lasagne könnte nützlich sein, mich durch diesen Bereich zu führen! –

3

Es sieht so aus, als ob dies in development ist. Ich habe erkannt, ich die conv2d() Funktion entweder durch Breite oder Höhe wie die Angabe 1 verwenden ...

Für die Funktion conv2d() der Parameter image_shape nimmt eine Liste der Länge 4, enthaltend:

([number_images,] height, width) 

durch Einstellung height=1 oder width=1 es zwingt es zu einer 1D Faltung.

+1

Das ist eigentlich genau was Lasagne in ihrer conv1d Schicht tut: https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py – Ishamael

3

Nur ein bisschen genauer zu sein, fand ich das gut funktionieren:

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' optional.