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

时间:2016-02-29 04:23:32

标签: 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,是否有类似的三维图像实现?

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

1 个答案:

答案 0 :(得分:0)

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