Python 神经网络错误率没有进展

Python 神经网络错误率没有进展,python,neural-network,lstm,recurrent-neural-network,pybrain,Python,Neural Network,Lstm,Recurrent Neural Network,Pybrain,这里没有神经网络。 我正在使用PyBrain尝试创建一个学习音乐的网络。 我的数据集由大约一百首歌曲组成,其中网络的输入是两个音符,目标是接下来的两个音符。 每个音符由一个int表示音符/和弦组合,一个int表示音符的八度,一个float表示音符的持续时间。 我的网络如下所示: net = RecurrentNetwork() net.addInputModule(LinearLayer(6, name='in')) net.addModule(LSTMLayer(50,

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

    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)
我的问题是,当我训练网络时,我得到了一个巨大的错误(例如24569847209.8),它似乎永远不会下降,它随着每个历元而变化,但总是徘徊在同一个数字附近

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


我真的不确定是什么原因导致了这种情况。如果有我应该包括的信息,请告诉我。

我似乎已经解决了学习问题! 随着我的训练,我的网络错误正在稳步减少! 我用错了教练。因为我使用的是递归神经网络,所以我不应该使用反向传播训练器。我现在正在使用RPROPS培训机。 要修复,请单击以下行:

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

trainer = RPropMinusTrainer(net, dataset=ds, verbose = True)

Stackoverflow更像是用来解决编码问题,而不是教人们如何使用神经网络。初始化网络时可能会出现很多问题。除非你真的有编码问题,否则我不同意你的评价。我有密码;这有个问题。我已经编辑了我的问题和标题,以消除任何混乱。如果你觉得我遗漏了一些重要的东西,请告诉我。可能是因为你的人际网络不知道该怎么做,因为歌曲中隐藏了太多两个音符的组合。你可以试着用几首非常相似的歌来“训练”你的网络。在这种情况下,网络将不会猜测,而是学习/记住序列,你应该看看你的方法是否普遍有效。@Joe只在一首歌(大约1000个音符对样本)上运行了1000个时代。开始时的总错误:5660650926.69,结束时的总错误:5563442152.03。结果是一样的——一次又一次地重复着同样的两个音符。我会尝试更多的训练,但在我看来,错误一开始就不应该那么高,这是一个荒谬的数字?在我看来,你的网络只是没有做你认为它做的事情。也许从一个非常简单的例子开始,也许拿一个50个数字的数组,可能有5个左右的正弦或余弦,让你的网络猜测它们。