Die einzige Funktion, die ich described here ist für 2D-Faltungen finden ...Wie kann ich eine 1D-Faltung in Theano
Gibt es eine optimierte 1D-Funktion?
Die einzige Funktion, die ich described here ist für 2D-Faltungen finden ...Wie kann ich eine 1D-Faltung in Theano
Gibt es eine optimierte 1D-Funktion?
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
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.
Das ist eigentlich genau was Lasagne in ihrer conv1d Schicht tut: https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py – Ishamael
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.
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! –