神经网络错误率不会进展

问题描述 投票:1回答:1

神经网络菜鸟在这里。 我正在使用PyBrain来尝试创建一个学习音乐的网络。 我的数据集由大约一百首歌曲组成,其中网络的输入是两个音符,目标是接下来的两个音符。 每个音符由音符/和弦组合的int表示,音符的八度音程为int,音符持续时间为浮点数。 我的网络看起来像这样:

    net = RecurrentNetwork()
    net.addInputModule(LinearLayer(6, name='in'))
    net.addModule(LSTMLayer(50, name='hidden1'))
    net.addModule(LSTMLayer(50, name='hidden2'))
    net.addOutputModule(LinearLayer(6, name='out'))
    net.addConnection(FullConnection(net['in'], net['hidden1'], name='c1'))
    net.addConnection(FullConnection(net['hidden1'], net['hidden2'], name='c3'))
    net.addRecurrentConnection(FullConnection(net['hidden2'], net['hidden1'], name='c4'))
    net.addConnection(FullConnection(net['hidden2'], net['out'], name='c5'))
    net.sortModules()

使用数据集和培训师如下:

ds = SupervisedDataSet(6, 6)
trainer = BackpropTrainer(net, ds, verbose = True, momentum = 0.01)

我的问题是,当我训练网络时,我得到一个巨大的错误(E.G。24569847209.8),它似乎永远不会下降,它随着每个时代而变化,但它总是在同一个数字上徘徊。

在训练网络之后,它通过将两个随机音符作为输入来创建一首歌曲,然后生成目标,然后将目标作为输入传回,并一遍又一遍地重复直到它有一首完整的歌曲。但我发现它所做的只是一遍又一遍地写输出,就像它只是学习一个固定目标一样。

我真的不确定我所拥有的是什么导致了这个问题。如果有一些信息我应该包括在内请告诉我。

python neural-network lstm recurrent-neural-network pybrain
1个回答
1
投票

我似乎已经解决了学习问题!我培训时,我的网络错误正在逐渐减少!我使用的是错误的训练师。由于我使用的是递归神经网络,我不应该使用反向传播训练器。我现在正在使用RPropMinusTrainer。要修复,请执行以下操作:

trainer = BackpropTrainer(net, ds, verbose = True, momentum = 0.01)

改成了

trainer = RPropMinusTrainer(net, dataset=ds, verbose = True)
© www.soinside.com 2019 - 2024. All rights reserved.