我正在做一个项目,我必须训练 LSTM 神经网络来生成音乐。第一步当然是训练它。我在 Theano 之上使用 Keras 来完成这项任务,并使用 music21 从 MIDI 文件中提取特征。到目前为止,我从 MIDI 文件中提取的数据具有以下格式:
[[69, -7, 1, 0.75], [62, -1, 0, 0.25] ... ]
这些是我从文件中获取的 4 个功能。然后将它们放置在一个 3D numpy 数组中,其形状为 -(序列中的音符数,1(每个样本的时间步长),4(特征))。我创建另一个数组,每个时间步的预期输出是下一个时间步的数据。我已经建立了以下模型: http: //pastebin.com/AHCJj1wa
问题是当它开始训练模型时,我得到一些无意义的输出。首先,epochs 的输出如下所示:
Epoch 1/100
0s - loss: 15.2986 - acc: 0.9738
Epoch 2/100
0s - loss: -3.3534e+02 - acc: 0.8265
Epoch 3/100
0s - loss: -3.8183e+02 - acc: 0.8265
Epoch 4/100
0s - loss: -3.8218e+02 - acc: 0.8265
Epoch 5/100
0s - loss: -3.8256e+02 - acc: 0.8265
它似乎每个时期都取 0,损失变得越来越大或完全停止变化(在运行之间有所不同)。同样在训练周期结束时,当我调用 .predict 时,它会打印出类似的内容:
[[ 0.11846249 -0.13457553 0.08614471 -0.1007532 ]
[ 0.14596225 -0.17533173 0.10007301 -0.08799653]
[ 0.15234099 -0.19707087 0.10395571 -0.08419057]
[ 0.14596225 -0.17533173 0.10007301 -0.08799653]
[ 0.14340727 -0.1664145 0.0987886 -0.09037785]
[ 0.14596225 -0.17533173 0.10007301 -0.08799653]
[ 0.14340727 -0.1664145 0.0987886 -0.09037785]
[ 0.14802463 -0.17770432 0.10296948 -0.08740482]
..... ]
我认为我的模型和/或数据表示存在根本性错误。关于我能做什么的任何想法,或者至少有一些关于我可以在哪里阅读的指针?