Как и многие люди, разрабатывающие модели глубокого обучения, мне мешают мои аппаратные ресурсы, а именно память 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