1

그래서 약 200 곡 (곡당 ~ 3-5 분) 분량의 고정 된 벡터 표현을 배우려고하고 있으며 LSTM 기반 Sequence- to-sequence Autoencoder가 있습니다.LSTM 음악 용 자동 엔코더 - Keras [시퀀스 시퀀싱]

나는 다음과 같이 (librosa 사용) 오디오를 전처리하고 있습니다 :

  1. 난 그냥 주위 모양의 원시 오디오 신호의 시계열 (1500000) 받고 처음이야 - (2500000) 노래 당합니다.
  2. 다음으로 각 원시 시간 시리즈를 세그먼트로 분할하고 노래 당 모양 (512, 3000) - (512, 6000)의 하위 레벨 멜 스펙트로 그램 매트릭스를 얻습니다. 이 (512,) 벡터 각각은 노래의 일부를 나타내는 '미니 노래'라고 할 수 있습니다.
  3. 모든 노래의 모든 미니 노래를 함께 쌓아 교육 데이터를 만듭니다 (X). X는 (512, 600000)으로 표시되며, 첫 번째 차원 (512)은 창 크기이고 두 번째 차원 (600000)은 데이터 집합의 '미니 노래'의 총 개수입니다.
  4. X에는 약 600000 개의 미니 노래가 있습니다. X의 각 열은 길이가 512 인 미니 노래를 나타냅니다.
  5. 각각의 (512 개) 미니 노래 벡터는 미니 노래 당 (50 개) 벡터로 인코딩되어야합니다. 즉, 처리가 끝날 때 600,000 (50 개)의 벡터가 있습니다.
  6. 더 많은 표준 용어로, 나는 길이 512의 각 600,000 개의 훈련 샘플을 가지고 있습니다. [이미지 데이터 세트와 유사하다고 생각하십시오. 이미지는 해상도가 32x32 인 길이가 784 인 이미지 600,000 개입니다. 내 경우를 제외하고 나는 시간적 특성을 가지고 시퀀스로 512 길이의 샘플을 처리하겠습니다.] 내가 예 here를 읽고 내 사용 사례에 대한 그 연장을 찾고 있었다

. Input 레이어에 대한 timestepsinput_dim 매개 변수를 설정해야하는지 궁금 해서요.

timesteps = X.shape[0] (이 경우 512) 및 input_dim = X.shape[1] (예 : 600000)으로 설정합니다. 이것이 올바른 방법일까요?

편집 : 위의 설명이 추가되었습니다.

+0

timesteps는 시간 관계 캡처를위한 적당한 범위 인 길이로 설정되어야한다고 생각합니다. 반면에 input_dim은 시퀀스의 변수 수로 설정해야합니다 (시간이 지남에 따라 오디오 시퀀스가 ​​1-D이면 1로 설정). 당신의 문제에 대한 진전이 있습니까? 코드를 공유하면 문제를 명확히하는 데 도움이됩니다. :) –

답변

0

입력 내용은 실제로 2D 이미지가 아닌 1D 시퀀스입니다. 입력 텐서는 (600000, 512, 1)이 될 것이므로 input_dim을 1로 설정하고 timesteps를 512로 설정해야합니다. 쉐이프 입력이 텐서의 첫 번째 차원 (즉, 600000)을 차지하지 않습니다.