1

私は約200曲(1曲につき3〜5分)のセグメントの固定ベクトル表現を学びたいと思っており、LSTMベースのシーケンス - そのためのシーケンス自動エンコーダーです。LSTM音楽のためのオートエンコーダー - ケラス[シーケンスのシーケンス]

次のように私は(librosaを使用して)オーディオを前処理しています:

  1. 私が最初だだけで周りの形状の生の音声信号の時系列(1500000)取得 - 曲ごと(2500000を)。
  2. 次に、各生の時系列をセグメントにスライスし、ソングごとに(512,3000) - (512,6000)の低レベルのメルスペクトログラムマトリックスを取得します。これらの(512、)ベクトルの各々は、それらが曲の一部を表すので、「ミニソング」と呼ぶことができる。
  3. トレーニングデータを作成するために、これらのすべての曲のミニソングを縦に積み重ねます(Xと呼ぶ)。 Xは(512,600000)であり、第1の次元(512)はウィンドウサイズであり、第2の次元(600000)はデータセットの「ミニソング」の総数である。
  4. Xには約600000のミニソングがあります.Xの各列は、長さ(512、)のミニソングを表します。
  5. これらの(512個の)ミニソングベクトルの各々は、ミニソング毎に(50個)のベクトルにコード化されるべきであり、すなわちプロセスの最後に600000個のベクトルを有する。
  6. もっと標準的な用語では、私は長さ512のそれぞれ600000のトレーニングサンプルを持っています。画像データセットに似ていると思います - 画像は解像度が32x32の長さ784の600000画像です。私の場合を除いて、私は一時的な性質を有する配列として512の長さのサンプルを扱いたい。]私は例hereを読んで、私のユースケースのためにそれを拡張するために探していた

。私はInputレイヤーにどのようなtimestepsinput_dimのパラメータを設定すべきかを考えていました。

timesteps = X.shape[0](この例では512)とinput_dim = X.shape[1](つまり600000)と設定しています。これは正しい方法ですか?

編集:上記の説明を追加しました。

+0

タイムスタンプは、時間的関係キャプチャの合理的な長さに設定する必要があります。一方、input_dimは、シーケンス内の変数の数に設定する必要があります(オーディオシーケンスが時間の経過とともに1-Dになる場合は1に設定されます)。あなたの問題の進歩?コードを共有すると、問題の明確化に役立ちます:) –

答えて

0

入力は実際には2D画像ではなく1Dシーケンスです。 入力テンソルは(600000,512,1)になり、input_dimを1に、タイムステップを512に設定する必要があります。 形状入力はテンソルの最初の次元(つまり、あなたの場合は600000)を使用しません。