编程语言
首页 > 编程语言> > python – PyBrain预测错误

python – PyBrain预测错误

作者:互联网

我试图预测一组特定商品的销售价格.我在pybrain中使用RecurrentNetwork和BackpropTrainer.这是我的代码,

def nnet(train, target, valid):

    ds = SupervisedDataSet(52-len(NU)+5, 1)

    for i in range(len(train)):
        ds.appendLinked(train[i], target[i])

    n = RecurrentNetwork()

    n.addInputModule(LinearLayer(52-len(NU)+5, name='in'))
    n.addModule(SigmoidLayer(3, name='hidden'))
    n.addOutputModule(LinearLayer(1, name='out'))

    n.addConnection(FullConnection(n['in'], n['hidden'], name='c1'))
    n.addConnection(FullConnection(n['hidden'], n['out'], name='c2'))
    n.addRecurrentConnection(FullConnection(n['hidden'], n['hidden'], name='c3'))

    n.sortModules()

    t = BackpropTrainer(n,learningrate=0.001,verbose=True)
    t.trainOnDataset(ds, 20)

    prediction = np.zeros((11573, 1), dtype = int)
    for i in range(11573):
        prediction[i] = n.activate(valid[i])

    return prediction

这里是numpy数组的训练和目标,用于训练模型,52-len(NU)5是属性(特征)的数量.对于有效的每个项目,我们必须预测销售价格.问题是,对于每个有效的项目,我得到相同的销售价格,除了第一个.我做错了什么?提前致谢.

数组尺寸如下,

火车 – 401125,52-len(NU)5

目标 – 401125,1

有效 – 11573,52-len(NU)5

解决方法:

我不确定PyBrain的具体实现细节,但我看到了两种可能性.

1)反向传播不适用于线性激活功能.根据PyBrain的实现细节,将“LinearLayer”的两个实例更改为“SigmoidLayer”可以解决此问题.

2)对于递归神经网络,您必须使用反向传播(一种专门适用于RNN的算法)而不是正常的反向传播.根据PyBrain的实现细节,此变体可能有一个单独的类.值得一试.

标签:python,pybrain
来源: https://codeday.me/bug/20190629/1328485.html