Python 在Theano中进行3d滑动窗口操作?

Python 在Theano中进行3d滑动窗口操作?,python,numpy,cython,theano,conv-neural-network,Python,Numpy,Cython,Theano,Conv Neural Network,TL博士。是否有一个三维友好的实现 我想使用神经网络对体积(nxn)进行体素分类,该神经网络接收nxn图像,其中N>N。要对体积中的每个体素进行分类,我必须遍历每个体素。对于每个迭代,我获取并传递邻域体素作为神经网络的输入。这只是一个滑动窗口操作,该操作是神经网络 虽然我的神经网络是用Theano实现的,但滑动窗口的实现是用python/numpy实现的。由于这不是一个纯Theano操作,因此分类需要永远(>3小时)才能在一个体积中对所有体素进行分类。对于二维滑动窗口操作,Theano有一个辅助

TL博士。是否有一个三维友好的实现

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

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

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

艾肯伯格和Kastner在sklearn\u theano.feature\u extraction.overfeat中的OverfeatTransformer实用程序将很好地匹配此操作,如OP.

相关讨论所述。或者,您可能想查看
sklearn.feature\u extraction.image.extract\u patches
。这可以让您查看所需的
nxn
多维数据集,而无需复制数据。将其与同样不复制的
np.einsum
结合,您可能会得到在可接受的时间内运行的东西(不保证,从未尝试过)供您参考
sklearn.feature\u extraction.image.extract\u patches
也使用跨步技巧来完成其工作。只需要几行代码和计算就可以得到正确的视图形状。嗯,这是可行的,但只适用于彩色图像。你是如何考虑将其扩展到3D体积的?嗯,你确定吗?请也看看这些东西的命名,就好像它们以前不存在一样。(为了完整起见,只需添加此项——我还没有看过你提到的论文,最终结果才是最重要的)