2016-08-18 53 views
0

我是Theano和Deep Learning中的新成员,我在Theano中运行我的实验,但我希望通过直接使用GPU进行数据增量来减少每个时代花费的时间。在Theano中使用GPU进行数据增强

不幸的是我不能使用PyCuda,所以我想知道是否有可能使用Theano进行基本的数据增强。例如图像中的翻译或旋转,同时我在使用Numpy的CPU中使用scipy功能,但速度很慢。

+0

我会看看[这个回购](https://github.com/benanne/kaggle-ndsb)。它是由[Lasagne](https://github.com/Lasagne/Lasagne)项目创建者编写的Kaggle竞赛代码。在他的解决方案中,他使用CPU完成所有数据增强,并将每个增量批次放入队列中,而GPU从队列和列车中抓取批次。 – gobrewers14

回答

0

如果数据增加是您的计算图的一部分,并且可以在GPU上执行,那么它自然会在GPU上执行。所以这个问题缩小到“是否可以在GPU上使用Theano张量操作来完成常见的数据增强任务”。

如果您要应用的转换仅仅是翻译,您可以使用theano.tensor.roll,然后进行一些屏蔽。如果你想旋转,请看this implementation of spatial transformer network。特别是看看_transform函数,它将输入一个矩阵theta,其中每个样本和实际样本都有一个2x3变换(左边的2x2是旋转,右边的1x2是平移),然后将旋转和平移应用到那些样品。我没有确认它是为GPU优化的(也就是说,该功能的瓶颈可能会在CPU上执行,这会使其不适合您的使用情况),但这是一个很好的起点。