Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 神经网络数据稀疏性_Python_Neural Network_Pybrain - Fatal编程技术网

Python 神经网络数据稀疏性

Python 神经网络数据稀疏性,python,neural-network,pybrain,Python,Neural Network,Pybrain,我正在用PyBrain训练一个音乐网络。输入是两个音符,输出是接下来的两个音符。 每个音符由一个整数表示,该整数映射到一个音符(例如C#=11,F=7)、八度和持续时间。因此,我使用了一个数据集: ds = SupervisedDataSet(6, 6) 这看起来像([note1,octave1,duration1,note2,octave2,duration2],[note1,octave1,duration1,note2,octave2,duration2]) 然而,我遇到了和弦问题(即一

我正在用PyBrain训练一个音乐网络。输入是两个音符,输出是接下来的两个音符。 每个音符由一个整数表示,该整数映射到一个音符(例如C#=11,F=7)、八度和持续时间。因此,我使用了一个数据集:

ds = SupervisedDataSet(6, 6)
这看起来像
([note1,octave1,duration1,note2,octave2,duration2],[note1,octave1,duration1,note2,octave2,duration2])

然而,我遇到了和弦问题(即一次演奏多个音符)。为了解决这个问题,我去掉了表示音符的第一个整数,并将其替换为22个整数,设置为1或0,以指示播放的音符。我还有这个,然后是八度和持续时间。 例如,下面

[0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0.5]
表示C#、E和a的和弦,八度为4,持续时间为0.5。
PyBrain在训练和测试后总是给我一个全零的输出。我理解它为什么会这样做,但我不知道如何修复它。
有没有更好的方法来表示音符/和弦,这样PyBrain就不会有这个问题

编辑:我已经将位向量转换成十进制数,虽然网络不再只给出零,但很明显它没有正确地学习模式

我使用的网络如下:

net = buildNetwork(6, 24, 6, bias=True, hiddenclass=LSTMLayer, recurrent=True)
trainer = BackpropTrainer(net, ds, verbose = True)
还有这样的教练:

net = buildNetwork(6, 24, 6, bias=True, hiddenclass=LSTMLayer, recurrent=True)
trainer = BackpropTrainer(net, ds, verbose = True)

当我训练时,我遇到了一个巨大的错误,大概是十个或十万个。

你的问题对我来说不太清楚,我想需要更详细的解释,但取决于我的理解,我想你不需要在你的网络中进行恢复,也可以尝试在隐藏层中使用另一个激活功能,例如
Softmax
。我用6个节点的输入和6个节点的输出在一些样本数据集上测试了它,它正在得到正确的训练,因此我建议您使用我的版本:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules import SoftmaxLayer

ds = SupervisedDataSet(6, 6)

#
# fill dataset
#
net = buildNetwork(6, 24, 6, bias=True, hiddenclass=SoftmaxLayer)
trainer = BackpropTrainer(net, ds)
列车:

error = 10
while error > 0.00001:  #choose error like you want
    error = trainer.train()
    print error #just for logging

#and activate
print net.activate([*,*,*,*,*,*])

请给我一个更详细的解释,我远离音乐和这个八度音阶和C#s,所以请编辑你的问题,并写下你如何训练你的网络,你使用哪个网络etc@Godot我已经在我原来的帖子中添加了更多的信息。就音乐术语而言,我认为这并不重要。基本上你可以想象我有22个灯光-我用22个二进制值表示开/关,一个int表示亮度,一个float表示持续时间。我遇到的问题是,因为在每个样本中,22个灯中的大多数都会熄灭,所以我的网络认为永远不会有任何灯点亮。我希望这能澄清!