在Theano中使用GPU进行数据扩充

时间:2016-08-18 15:24:07

标签: python numpy deep-learning theano theano-cuda

我是Theano和Deep Learning的新手,我正在Theano中运行我的实验,但我想通过直接使用GPU进行数据增加来减少每个时期花费的时间。

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

1 个答案:

答案 0 :(得分:0)

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

如果您要应用的转换只是翻译,您可以使用theano.tensor.roll,然后进行一些屏蔽。如果您也想要旋转,请查看this implementation of spatial transformer network。特别是看一下_transform函数,它将一个矩阵theta作为输入,它具有2x3变换(左2x2是旋转,右1x2是平移)每个样本和实际样本一个,并应用旋转并转换为这些样本。我没有确认它的功能是针对GPU进行了优化的(即可能是CPU上执行该功能的瓶颈,这将使其不适合您的用例),但这是一个很好的起点。