我是 Theano 和深度学习的新手,我正在 Theano 中进行实验,但我想通过直接使用 GPU 进行数据增强来减少每个 epoch 所花费的时间。
不幸的是我不能使用 PyCuda,所以我想知道是否可以使用 Theano 进行基本的数据增强。例如图像中的平移或旋转,同时我使用 Numpy 在 CPU 中使用 scipy 函数,但速度很慢。
我是 Theano 和深度学习的新手,我正在 Theano 中进行实验,但我想通过直接使用 GPU 进行数据增强来减少每个 epoch 所花费的时间。
不幸的是我不能使用 PyCuda,所以我想知道是否可以使用 Theano 进行基本的数据增强。例如图像中的平移或旋转,同时我使用 Numpy 在 CPU 中使用 scipy 函数,但速度很慢。
如果数据增强是计算图的一部分,并且可以在 GPU 上执行,那么它自然会在 GPU 上执行。所以问题缩小到“是否有可能在 GPU 上使用 Theano 张量操作来完成常见的数据增强任务”。
如果您要应用的转换只是翻译,您可以使用theano.tensor.roll
后跟一些掩码。如果您也想要旋转,请查看此实现的空间变换器网络。特别看一下这个_transform
函数,它将一个矩阵 theta 作为输入,该矩阵有一个 2x3 变换(左 2x2 是旋转,右 1x2 是平移)每个样本和实际样本一个,并将旋转和平移应用于那些样品。我没有确认它的功能是否针对 GPU 进行了优化(即,该功能的瓶颈可能是在 CPU 上执行,这将使其不适合您的用例),但这是一个很好的起点。