1

因此,我正在尝试为大约 200 首歌曲(每首歌曲约 3-5 分钟)的片段学习固定向量表示,并希望为此使用基于 LSTM 的序列到序列自动编码器。

我正在预处理音频(使用 librosa),如下所示:

  1. 我首先只是得到每首歌曲大约 (1500000,) - (2500000,) 形状的原始音频信号时间序列。
  2. 然后,我将每个原始时间序列切成片段,并获得每首歌曲形状 (512, 3000) - (512, 6000) 的较低级别的 mel 频谱图矩阵。这些 (512,) 向量中的每一个都可以称为“迷你歌曲”,因为它们代表歌曲的各个部分。
  3. 我将所有歌曲的所有这些迷你歌曲垂直堆叠在一起以创建训练数据(我们称之为X)。X 的大小是 (512, 600000),其中第一个维度 (512) 是窗口大小,第二个维度 (600000) 是数据集中“迷你歌曲”的总数。
  4. 也就是说,X 中大约有 600000 首迷你歌——X 中的每一列代表一首长度为 (512,) 的迷你歌。
  5. 这些 (512,) 个迷你歌曲向量中的每一个都应该被编码为每个迷你歌曲的 (50,) 个向量,即在过程结束时我们将有 600000 (50,) 个向量。
  6. 用更标准的术语来说,我有 600000 个训练样本,每个长度为 512。[认为这类似于图像数据集 - 600000 个图像,每个长度为 784,其中图像的分辨率为 32x32。除了在我的情况下,我想将 512 长度的样本视为具有时间属性的序列。]

我在这里阅读了这个例子,并希望为我的用例扩展它。我想知道应该将图层的timestepsinput_dim参数设置为什么。Input

我正在设置timesteps = X.shape[0](即在这种情况下为 512)和input_dim = X.shape[1](即 600000)。这是正确的方法吗?

编辑:在上面添加了说明。

4

1 回答 1

0

您的输入实际上是一维序列而不是二维图像。输入张量将为 (600000, 512, 1) 并且您需要将 input_dim 设置为 1 并将时间步长设置为 512。形状输入不采用张量的第一维(即在您的情况下为 600000)。

于 2017-03-08T06:45:19.773 回答