Итак, я пытаюсь изучить фиксированные векторные представления для сегментов около 200 песен (~ 3-5 минут на песню) и хотел использовать LSTM-последовательность Sequence- to-sequence Autoencoder для него.LSTM Autoencoder для музыки - Keras [Последовательность к последовательности]
Я предварительная обработка аудио (с помощью librosa) следующим образом:
- Я первый раза получая сырое аудио сигнала во время серии формы вокруг (1500000,) - (2500000,) за песню.
- Я потом нарезаю каждую сырую временную серию на сегменты и получаю матричную матрицу спектрограммы нижнего уровня формы (512, 3000) - (512, 6000) за песню. Каждый из этих (512,) векторов можно назвать «мини-песнями», поскольку они представляют части песни.
- Я вертикально складываю все эти мини-песни всех песен вместе, чтобы создать обучающие данные (назовем это X). X получается размером (512, 600000), где первое измерение (512) - размер окна, а второе измерение (600000) - это общее количество «мини-песен» в наборе данных.
- К слову, есть около 600000 мини-песен в X - каждый столбец в X представляет собой мини-песню длины (512).
- Каждый из этих (512,) векторов мини-песен должен быть закодирован в вектор (50) на мини-песню, то есть у нас будет 600000 (50,) векторов в конце процесса.
- В более стандартной терминологии у меня есть 600000 учебных образцов, каждая из которых имеет длину 512. [Подумайте об этом как о том, что это похоже на набор данных изображения - 600000 изображений, каждая из которых длиной 784, где изображения имеют разрешение 32x32. За исключением случаев, в моем случае я хочу обработать образцы 512 длины как последовательности, которые имеют временные свойства.]
Я прочитал пример here и искал, чтобы расширить, что для моего случая использования. Мне было интересно, какие параметры timesteps
и input_dim
должны быть установлены на уровень Input
.
Я устанавливаю timesteps = X.shape[0]
(то есть 512 в этом случае) и input_dim = X.shape[1]
(то есть 600000). Правильно ли это?
Редактировать: Дополнительные пояснения выше.
Я думаю, что timesteps должен быть установлен на длину, которая является разумным интервалом для захвата временной привязки. input_dim, с другой стороны, должно быть установлено на количество переменных в последовательности (установлено в 1, если аудиопоследовательность 1-D со временем). Любой прогресс в вашей проблеме? поделиться этим кодом было бы более полезным для выяснения проблемы :) –