在Theano的3D推拉窗口操作?

ten*_*eng 21 python numpy cython theano conv-neural-network

TL.DR. 是否有三维友好实施theano.tensor.nnet.neighbours.images2neibs

我想使用一个接收nxnxn图像的神经网络对体积(NxNxN)进行体素分类,其中N> n.为了对体积中的每个体素进行分类,我必须遍历每个体素.对于每次迭代,我获得并传递邻域体素作为神经网络的输入.这只是一个滑动窗口操作,其操作是神经网络.

虽然我的神经网络在Theano中实现,但滑动窗口实现是python/numpy.由于这不是纯粹的Theano操作,因此分类需要永久(> 3小时)来对一个体积中的所有体素进行分类.对于2d滑动窗口操作,Theano有一个辅助方法theano.tensor.nnet.neighbours.images2neibs,是否有类似的三维图像实现?

编辑:nd滑动窗口现有numpy解决方案(12),都使用np.lib.stride_tricks.as_strided来提供"滑动窗口的视图",从而防止内存问题.在我的实现中,滑动窗口数组从numpy(Cython)传递到Python然后传递到Theano.为了提高性能,我可能不得不绕过Python.

J_H*_*J_H 1

正如 OP 提到的,Eickenberg 和 Kastner 在 sklearn_theano.feature_extraction.overfeat 中的 OverfeatTransformer 实用程序非常适合此操作。