Используя тензор потока, как вы можете усреднить значения градиента параметров по количеству пакетов и обновить их с помощью этого среднего значения? - PullRequest
0 голосов
/ 26 сентября 2018

Как и многие люди, разрабатывающие модели глубокого обучения, мне мешают мои аппаратные ресурсы, а именно память GPU.У меня проблема с классификацией звука, для которой я пробую несколько RNN.Данные очень большие, и я могу использовать только небольшие размеры партий, и я должен также ограничить размер lstm.Я понимаю, что многие люди используют спектрограммы или другие методы для предоставления более сжатых данных в сеть, но я бы хотел узнать, как это сделать с необработанными данными.

Это то, что я сейчас делаю для размера пакетаоколо 4:

loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=label_op))

optimisation_op = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(loss_op)

В идеале я хотел бы рассчитать градиенты для каждого параметра для пакета в графическом процессоре, а затем переместить их в ОЗУ, вычисляя градиенты для следующего пакета.После некоторого количества пакетов я бы хотел усреднить градиенты для каждого параметра и использовать их для обновления сети.

Я получил эту идею на начальной странице github, которая описывает нечто похожее на распараллеливание для нескольких графических процессоров.: https://github.com/tensorflow/models/tree/master/research/inception

1 Ответ

0 голосов
/ 02 октября 2018

Используйте объекты tf.Variable для хранения градиентов.Поместите их в процессор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...