Ich versuche eine Scan-Schleife in theano zu implementieren, die bei einem Tensor eine "bewegliche Scheibe" der Eingabe verwendet. Es muss nicht wirklich ein sich bewegendes Stück sein, es kann ein vorverarbeiteter Tensor zu einem anderen Tensor sein, der das sich bewegende Stück darstellt.Überlappende Iteration über den Tensor
wesentlichen in Betracht:
[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
|-------| (first iteration)
|-------| (second iteration)
|-------| (third iteration)
...
...
...
|-------| (last iteration)
wo |-------|
der Eingang für jede Iteration ist.
Ich versuche herauszufinden, die effizienteste Möglichkeit, es zu tun, vielleicht mit einer Form der Referenzierung oder Manipulation von Schritten, aber ich habe es nicht geschafft, etwas zu arbeiten, auch für reine numpy.
Eine mögliche Lösung, die ich gefunden habe, kann here gefunden werden, aber ich kann nicht herausfinden, wie man schreitet, und ich sehe keinen Weg, das mit theano zu verwenden.
[ 'theano.sandbox.neighbours.images2neibs'] (http://deeplearning.net/software/theano/library/tensor/nnet/neighbours.html#module-sandbox .neighbours) liegt in der Nähe zu dem, was Sie suchen. Soweit ich weiß, funktioniert es nur mit einem 4D Tensor, aber Sie könnten versuchen, Ihren 1D Vektor in (1, 1, 1, N) umzuformen. –
Hm, das erfordert tatsächlich einige spezifischere Informationen, z. B. ob die Funktion, die auf das Segment angewendet werden soll, die vergangenen Ergebnisse sehen muss oder nicht. Die allgemeinste Lösung wird mit 'theano.scan', wie in der Antwort unten, aber mit einigen zusätzlichen Informationen, diese reduzieren können z.B. eine Faltung mit einem geeigneten Kern durch eine andere Funktion gefolgt. – eickenberg
Der Grund, warum ich diese bewegliche Scheibe möchte, ist, weil ich versuche, eine 1d Faltung auf jede Scheibe anzuwenden. Ich denke, was ich will ist bereits [hier] (https://github.com/Lasagne/Lasagne/blob/master/lasagne/theano_extensions/conv.py#L97) implementiert, aber ich möchte, dass ich die Ergebnisse im Tandem mit anderen Operationen möchte während eines Scans, und ich gehe davon aus, dass es effizienter wäre, jedes Faltungsergebnis für jede Scheibe zu erhalten, und nachdem ich damit fertig bin, gehe zur nächsten über. Ich denke, @carriepl hat genau das beantwortet, was ich meine Theorie testen wollte. Wenn Sie weitere Beispiele dafür haben, teilen Sie uns bitte mit! Danke –