¿Operación de ventana deslizante 3D en Theano?

TL.DR. ¿Existe una implementación amigable tridimensional detheano.tensor.nnet.neighbours.images2neibs?

Me gustaría realizar una clasificación de voxel-sabio de un volumen (NxNxN) usando una red neuronal que toma una imagen nxnxn, donde N> n. Para clasificar cada vóxel en el volumen, tengo que recorrer cada vóxel. Para cada iteración, obtengo y paso los vóxeles del vecindario como entrada a la red neuronal. Esto es simplemente una operación de ventana deslizante, la operación es la red neuronal.

Mientras mi red neuronal se implementa en Theano, la implementación de la ventana deslizante está en python / numpy. Como esta no es una operación pura de Theano, la clasificación tarda una eternidad (> 3 horas) en clasificar todos los vóxeles en un volumen. Para la operación de ventana deslizante 2D, Theano tiene un método auxiliar,theano.tensor.nnet.neighbours.images2neibs, ¿hay una implementación similar para imágenes tridimensionales?

editar: existen soluciones numpy existentes (1 y2) para la ventana deslizante n-d, ambos usan np.lib.stride_tricks.as_strided para proporcionar 'vistas de la ventana deslizante', evitando así problemas de memoria. En mi implementación, las matrices de ventanas deslizantes se pasan de numpy (Cython) a Python y luego a Theano. Para aumentar el rendimiento, es probable que tenga que pasar por alto Python.

Respuestas a la pregunta(1)

Su respuesta a la pregunta