2016-08-18 1 views
0

Я новичок в Theano и Deep Learning, я запускаю свои эксперименты в Theano, но я хотел бы сократить время, затрачиваемое на эпоху, путем создания данных напрямую с помощью GPU.Усовершенствование данных с использованием GPU в Theano

К сожалению, я не могу использовать PyCuda, поэтому я хотел бы знать, возможно ли выполнить базовую функцию Data Augmentation с помощью Theano. Например, перевод или поворот на изображениях, тем временем я использую scipy функции в CPU с помощью Numpy, но он довольно медленный.

+0

Я бы посмотрел на [это репо] (https://github.com/benanne/kaggle-ndsb). Это код из конкурса Kaggle, написанный создателем проекта [Lasagne] (https://github.com/Lasagne/Lasagne). В своем решении он выполняет все расширения данных с использованием своего процессора и помещает каждую дополненную партию в очередь, в то время как GPU захватывает партии из очереди и поезда. – gobrewers14

ответ

0

Если расширение данных является частью вашего вычислительного графика и может быть выполнено на графическом процессоре, оно, естественно, будет выполнено на графическом процессоре. Таким образом, вопрос сужается до «возможно ли выполнять общие задачи по увеличению данных с использованием тензорных операций Anano на GPU».

Если преобразования, которые вы хотите применить, являются просто переводами, вы можете просто использовать theano.tensor.roll, а затем некоторые маскировки. Если вы хотите поворота, посмотрите на this implementation of spatial transformer network. В частности, посмотрите на функцию _transform, она принимает в качестве входной матрицы тета, которая имеет преобразование 2x3 (левое 2x2 - вращение, а правое 1x2 - перевод) по одному на образец и фактические образцы и применяет поворот и перевод в эти образцы. Я не подтвердил, что то, что он делает, оптимизировано для GPU (т. Е. Может быть, что узкое место этой функции выполняется на CPU, что сделает его непригодным для вашего использования), но это хорошая отправная точка.

Смежные вопросы