Передача напрямую мини-партии с помощью функции Theano - PullRequest
0 голосов
/ 07 сентября 2018

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

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

...