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

问题描述 投票:19回答:1

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。

python numpy cython theano conv-neural-network
1个回答
0
投票

如上所述,ekenberg和Kastner在sklearn_theano.feature_extraction.overfeat中的OverfeatTransformer实用程序将很好地匹配此操作。

© www.soinside.com 2019 - 2024. All rights reserved.