2016-02-29 13 views
16

TL.DR. Esiste un'implementazione amichevole tridimensionale di theano.tensor.nnet.neighbours.images2neibs?operazione finestra scorrevole 3D in Theano?

Vorrei eseguire la classificazione voxel-wise di un volume (NxNxN) utilizzando una rete neurale che contiene un'immagine nxnxn, dove N> n. Per classificare ciascun voxel nel volume, devo scorrere ogni voxel. Per ciascuna iterrazione, ottengo e passo i voxel del vicinato come input per la rete neurale. Questa è semplicemente un'operazione a finestra scorrevole, che l'operazione è la rete neurale.

Mentre la mia rete neurale è implementata in Theano, l'implementazione della finestra scorrevole è in python/numpy. Poiché questa non è una pura operazione di Theano, la classificazione richiede sempre (> 3 ore) per classificare tutti i voxel in un volume. Per l'operazione della finestra scorrevole 2d, Theano ha un metodo di supporto, theano.tensor.nnet.neighbours.images2neibs, esiste un'implementazione simile per le immagini tridimensionali?

edit: Ci sono soluzioni NumPy esistenti (1 e 2) per n-d finestra scorrevole, sia per uso np.lib.stride_tricks.as_strided per fornire 'vista della finestra scorrevole', evitando così problemi di memoria. Nella mia implementazione, gli array di finestre scorrevoli vengono passati da numpy (Cython) a Python e quindi a Theano. Per migliorare le prestazioni, è probabile che io debba bypassare Python.

+0

discussione relativa. https://github.com/Theano/Theano/issues/2166 – teng

+1

In alternativa, potresti voler controllare 'sklearn.feature_extraction.image.extract_patches'. Questo può darti una vista sui cubi 'nxnxn' desiderati senza fare una copia dei dati. Combinalo con un 'np.einsum' che non copia e puoi ottenere qualcosa che funziona in un tempo accettabile (nessuna garanzia, mai provato) – eickenberg

+0

Grazie Eickenberg. Dovrò dare un'occhiata a 'np.einsum'! – teng

risposta

0

L'utilità OverfeatTransformer di Eickenberg e Kastner in sklearn_theano.feature_extraction.overfeat sarebbe una buona corrispondenza per questa operazione, come indicato da OP.