Numpy Pybrain回归未收敛到合理值

Numpy Pybrain回归未收敛到合理值,numpy,scipy,pybrain,Numpy,Scipy,Pybrain,我是PyBrain的初学者(对ANN来说是相当新的),所以为了熟悉PyBrain的使用,我试着训练一个sin函数。我的输出没有什么意义——对于每个数据点,我得到一个0、-0或某个固定实数的输出(在下面的示例中,我得到一个实数)。这表明我没有正确地训练 我一直在尝试通过SupervisedDataSet(1,1)创建一个包含一个输入和一个输出的数据集,并使用BackPropTrainer()进行培训。我已经广泛阅读了PyBrain文档,它相当稀少,示例也不多。我的输入是一个范围(01000)内的整

我是PyBrain的初学者(对ANN来说是相当新的),所以为了熟悉PyBrain的使用,我试着训练一个sin函数。我的输出没有什么意义——对于每个数据点,我得到一个0、-0或某个固定实数的输出(在下面的示例中,我得到一个实数)。这表明我没有正确地训练

我一直在尝试通过SupervisedDataSet(1,1)创建一个包含一个输入和一个输出的数据集,并使用BackPropTrainer()进行培训。我已经广泛阅读了PyBrain文档,它相当稀少,示例也不多。我的输入是一个范围(01000)内的整数,我的输出/目标只是该整数的sin乘以某个常数(因此它的计算值介于0和2pi之间)。代码如下:

def add_samples():

    ds = SupervisedDataSet(1,1)

    for j in  range(0,1000):
            ds.addSample(j,math.sin((j*math.pi)/500))

    print ds
    return ds

def FeedForward():
    n= FeedForwardNetwork()

    #construct input, hiddent, and output Layers
    inLayer=LinearLayer(1)
    hiddenLayer = SigmoidLayer(3)
    outLayer=LinearLayer(1)


    # add layers to the network
    n.addInputModule(inLayer)
    n.addModule(hiddenLayer)
    n.addOutputModule(outLayer)

    # make the connections between the layers
    in_to_hidden = FullConnection(inLayer, hiddenLayer)
    hidden_to_out = FullConnection(hiddenLayer, outLayer)

    # explicitly adding the connections to the network
    n.addConnection(in_to_hidden)
    n.addConnection(hidden_to_out)

    # some internal organization
    n.sortModules()
    print n
    return n
def backprop():
    n=FeedForward()
    ds=add_samples()

    trainer = BackpropTrainer(n, ds)
    trainer.trainOnDataset(ds,100)
    trainer.testOnData(verbose=True)



def main():
    backprop()

if __name__ == '__main__':
    main()
我的输出如下所示:

  error:  0.00084029
  out:     [0.016 ]
  correct: [-0.019]
  error:  0.00060250
  out:     [0.016 ]
  correct: [-0.013]
  error:  0.00040415
  out:     [0.016 ]
  correct: [-0.006]
  error:  0.00024526
所有1000个输出评估为0.016。有没有人有什么建议或者可以给我举个好例子?我绕圈子转了一会儿。我会想象我遗漏了一些琐碎的东西,或者在ANN或机器学习中遗漏了一些基本的概念。请让我知道如果我提供更多信息是否会有所帮助。谢谢