神经网络错误率没有进展

2024-10-01 22:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

神经网络是这里的绝招。
我正在使用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),它似乎从来没有下降,它随着每个时代的变化而变化,但它总是徘徊在同一个数字上。你知道吗

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

我真的不知道我的东西到底是怎么回事这个。如果有一些信息我应该包括请让我知道。你知道吗


Tags: 数据namein网络目标netint音符
1条回答
网友
1楼 · 发布于 2024-10-01 22:28:50

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

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

已更改为

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

相关问题 更多 >

    热门问题