Ошибка памяти во время работы автокодеров LSTM - PullRequest
0 голосов
/ 31 января 2019

Я настраиваю автоматический кодер LSTM с многовариантными временными последовательностями.Каждая моя последовательность имеет разные временные шаги (приблизительно 30 миллионов шагов в одной последовательности) и 6 функций.Я знаю, чтобы дать одну последовательность в качестве входных данных для автокодера LSTM, я должен изменить свою последовательность как (1,30 миллиона, 6). Я изменил все свои 9 последовательностей аналогичным образом.Я хочу, чтобы автокодер реконструировал мои последовательности.Однако моя программа падает из-за большого количества временных шагов в каждой последовательности.Как я могу решить эту ошибку памяти.Даже если я даю данные в пакетном размере, моей программе не хватает памяти.Я новичок в машинном обучении и последовательном обучении, поэтому, пожалуйста, помогите мне с тем же. Моя сеть прикреплена ниже: `

def repeat_vector (args):

 [layer_to_repeat, sequence_layer] = args

 return RepeatVector(K.shape(sequence_layer)[1])(layer_to_repeat)

encoder_input = Input (shape = (None, self._input_features))

encoder_output = LSTM (self._latent_space) (encoder_input)

decoder_input = Lambda (repeat_vector, output_shape = (None, self._latent_space)) ([encoder_output, encoder_input])

decoder_output = LSTM (self._input_cells, return_sequence = True) (decoder_input)

self._autoencoder = Модель (encoder_input, decoder_output) `

Я уже пытался принять ввод через файлы hdf.

1 Ответ

0 голосов
/ 01 февраля 2019

Я не уверен, какую конфигурацию системы вы используете.ООМ могут быть решены как с программной, так и с аппаратной стороны.Если вы используете систему с 4 ГБ ОЗУ и процессором i5 (при условии, что это Intel), она может не работать.Если вы работаете на графическом процессоре (что маловероятно), это не должно быть аппаратной проблемой.

Если в вашей системе установлена ​​графическая карта, тогда вы можете немного оптимизировать код.

  1. Попробуйте размер пакета 1. 1. 1007 *
  2. Если у вас есть очередь предварительной обработки и т. Д., Попробуйте настроить размер очереди.
  3. Я бы предложил вампопробуйте это для небольшой серии, прежде чем приступить к завершению, и проверьте, работает ли оно.
  4. Если вы сделаете шаг по времени большим, он потеряет точность, а если он станет слишком маленьким, то этотяжело вычислить.Проверьте для каждого из них, можно ли увеличить шаг по времени, не сильно ухудшая точность.
  5. Вы можете использовать PCA для понимания важных функций и уменьшения размерности.Вы также можете использовать случайный лес в качестве шага предварительной обработки, чтобы знать важность функции и уменьшать ее с меньшими затратами.
...