Machine learning LSTM音乐自动编码器-Keras[序列到序列]

Machine learning LSTM音乐自动编码器-Keras[序列到序列],machine-learning,deep-learning,keras,recurrent-neural-network,autoencoder,Machine Learning,Deep Learning,Keras,Recurrent Neural Network,Autoencoder,所以,我试图学习大约200首歌曲片段的固定向量表示法(每首歌曲约3-5分钟),并希望使用基于LSTM的序列对其进行自动编码 我正在预处理音频(使用librosa),如下所示: 我首先得到的是一个原始音频信号时间序列,每首歌的形状大约为(1500000,-(2500000) 然后,我将每个原始时间序列分割成若干段,并得到每首歌曲的较低级别的mel谱图矩阵形状(5123000)-(5126000)。这些(512,)向量中的每一个都可以称为“迷你歌曲”,因为它们代表歌曲的一部分 我将所有歌曲的所有这些

所以,我试图学习大约200首歌曲片段的固定向量表示法(每首歌曲约3-5分钟),并希望使用基于LSTM的序列对其进行自动编码

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

  • 我首先得到的是一个原始音频信号时间序列,每首歌的形状大约为(1500000,-(2500000)
  • 然后,我将每个原始时间序列分割成若干段,并得到每首歌曲的较低级别的mel谱图矩阵形状(5123000)-(5126000)。这些(512,)向量中的每一个都可以称为“迷你歌曲”,因为它们代表歌曲的一部分
  • 我将所有歌曲的所有这些迷你歌曲垂直堆叠在一起,以创建训练数据(我们称之为X)。X的大小是(51260000),其中第一个维度(512)是窗口大小,第二个维度(600000)是数据集中“迷你歌曲”的总数
  • 也就是说,X中大约有600000首迷你歌曲——X中的每一列代表一首长度为512的迷你歌曲
  • 这些(512,)迷你歌曲向量中的每一个都应该被编码成每首迷你歌曲一个(50,)向量,也就是说,在这个过程结束时,我们将有600000(50,)个向量
  • 在更标准的术语中,我有600000个训练样本,每个样本长度为512。[将其视为类似于图像数据集-600000个图像,每个图像的长度为784,其中图像的分辨率为32x32。我想将512个长度样本视为具有时间属性的序列。]
  • 我阅读了这个示例,并希望在我的用例中扩展它。我想知道
    input
    层的
    timesteps
    input\u dim
    参数应该设置为什么

    我正在设置
    timesteps=X.shape[0]
    (在本例中为512)和
    input\u dim=X.shape[1]
    (即600000)。这是正确的方法吗


    编辑:添加了上述澄清

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

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

    我认为时间步长应设置为时间关系捕获的合理跨度长度。另一方面,输入_dim应设置为序列中的变量数(如果音频序列随时间为1-D,则设置为1)。你的问题有进展吗?共享代码将更有助于澄清问题:)我认为应该将timesteps设置为时间关系捕获的合理范围。另一方面,输入_dim应设置为序列中的变量数(如果音频序列随时间为1-D,则设置为1)。你的问题有进展吗?共享代码将更有助于澄清问题:)