首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyBrain预测误差

PyBrain预测误差
EN

Stack Overflow用户
提问于 2013-03-10 12:48:06
回答 1查看 686关注 0票数 4

我正在尝试预测一组给定商品的销售价格。我在pybrain中使用RecurrentNetwork和BackpropTrainer。这是我的代码,

代码语言:javascript
复制
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是有效的属性(特征)的数量,我们必须预测销售价格(.For)。问题是,对于有效的每一项,除了第一项之外,我得到了相同的销售价格。我做错了什么?提前谢谢。

数组维数如下:

列车- 401125,52镜头(NU)+5

目标- 401125,1

有效- 11573,52个镜头(NU)+5

EN

回答 1

Stack Overflow用户

发布于 2014-05-21 05:08:00

我不确定PyBrain的具体实现细节,但我认为有两种可能性。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15319030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档