Передача напрямую мини-партии с помощью функции Theano

Я реализую нейронную сеть, используя theano для идентификации рукописных цифр (проблема mnist). Входные данные представляют собой изображения с разрешением 28х28 пикселей в оттенках серого. Я использую градиентный спуск для обучения сети. В моем коде у меня есть функция, которая обновляет параметры (веса и смещения) с использованием стохастического градиентного спуска. Функция примерно такая,

train_mb = theano.function(
    [i,eta], cost, updates=updates,
                givens={
                    self.x:
                    training_x[i*mini_batch_size: (i+1)*mini_batch_size],
                    self.y:
                    training_y[i*mini_batch_size: (i+1)*mini_batch_size]
                })

где стоимость - функция стоимости, эта скорость обучения, а обновления определяются как

 updates = [(param, param - eta*grad) for param, grad in zip(self.params, grads)]

где param - это весовые коэффициенты, а grad - градиент функции стоимости.

Я хотел бы сделать некоторое увеличение данных. Для этого я хотел бы взять каждое изображение и выполнить переводы (влево, вправо, вверх, вниз), а также некоторые повороты под небольшим углом.

Чтобы сэкономить дисковое пространство, я хотел бы выполнить вышеупомянутые операции с изображениями для каждой мини-партии, чтобы создать таким образом список, содержащий текущую мини-серию, а также несколько отличающиеся от нее версии. Затем я хотел бы передать каждую мини-серию из этого списка в функцию train_mb.

Я не нашел способ сделать это. Может кто-нибудь дать подсказку о том, как это сделать.

Большое спасибо,

Alejandro

0 ответов

Другие вопросы по тегам