1

Итак, я пытаюсь изучить фиксированные векторные представления для сегментов около 200 песен (~ 3-5 минут на песню) и хотел использовать LSTM-последовательность Sequence- to-sequence Autoencoder для него.LSTM Autoencoder для музыки - Keras [Последовательность к последовательности]

Я предварительная обработка аудио (с помощью librosa) следующим образом:

  1. Я первый раза получая сырое аудио сигнала во время серии формы вокруг (1500000,) - (2500000,) за песню.
  2. Я потом нарезаю каждую сырую временную серию на сегменты и получаю матричную матрицу спектрограммы нижнего уровня формы (512, 3000) - (512, 6000) за песню. Каждый из этих (512,) векторов можно назвать «мини-песнями», поскольку они представляют части песни.
  3. Я вертикально складываю все эти мини-песни всех песен вместе, чтобы создать обучающие данные (назовем это X). X получается размером (512, 600000), где первое измерение (512) - размер окна, а второе измерение (600000) - это общее количество «мини-песен» в наборе данных.
  4. К слову, есть около 600000 мини-песен в X - каждый столбец в X представляет собой мини-песню длины (512).
  5. Каждый из этих (512,) векторов мини-песен должен быть закодирован в вектор (50) на мини-песню, то есть у нас будет 600000 (50,) векторов в конце процесса.
  6. В более стандартной терминологии у меня есть 600000 учебных образцов, каждая из которых имеет длину 512. [Подумайте об этом как о том, что это похоже на набор данных изображения - 600000 изображений, каждая из которых длиной 784, где изображения имеют разрешение 32x32. За исключением случаев, в моем случае я хочу обработать образцы 512 длины как последовательности, которые имеют временные свойства.]

Я прочитал пример here и искал, чтобы расширить, что для моего случая использования. Мне было интересно, какие параметры timesteps и input_dim должны быть установлены на уровень Input.

Я устанавливаю timesteps = X.shape[0] (то есть 512 в этом случае) и input_dim = X.shape[1] (то есть 600000). Правильно ли это?

Редактировать: Дополнительные пояснения выше.

+0

Я думаю, что timesteps должен быть установлен на длину, которая является разумным интервалом для захвата временной привязки. input_dim, с другой стороны, должно быть установлено на количество переменных в последовательности (установлено в 1, если аудиопоследовательность 1-D со временем). Любой прогресс в вашей проблеме? поделиться этим кодом было бы более полезным для выяснения проблемы :) –

ответ

0

Ваш вход представляет собой 1D-последовательность, а не 2D-изображение. Входной тензор будет равен (600000, 512, 1), и вам необходимо установить значение параметра input_dim равным 1, а временные метки - 512. Входной сигнал формы не принимает первое измерение тензора (то есть 600000 в вашем случае).

Смежные вопросы