【问题标题】:How to restrict PyBrain output module domain?如何限制 PyBrain 输出模块域?
【发布时间】:2013-12-31 18:48:38
【问题描述】:

在一个项目上工作以使用 PyBrain 进行一些预测,但是我想知道如何以简单的方式限制 NN 输出的域,以便输出层仅在域 [0..1] 中生成值。

目前,我在网络的一些激活中得到负值。

我搜索了 PyBrain 文档,但没有遇到任何似乎表明这是可能的方法或方法参数。相关代码示例如下:

self.pybrain_net_date = buildNetwork(self.pb_indim, hidden_dim, hidden_dim, 1, hiddenclass=SigmoidLayer, outclass=LinearLayer, bias=True)
self.pybrain_net_amount = buildNetwork(self.pb_indim, hidden_dim, hidden_dim, 1, hiddenclass=SigmoidLayer, outclass=LinearLayer, bias=True)

trainer_date = BackpropTrainer(self.pybrain_net_date, self.pbds_train_date)
trainer_amount = BackpropTrainer(self.pybrain_net_amount, self.pbds_train_amount)

print trainer_date.trainUntilConvergence(self.pbds_train_date, 30, verbose=True, validationProportion=0.20)
print trainer_amount.trainUntilConvergence(self.pbds_train_amount, 30, verbose=True, validationProportion=0.20)

for index, row in input_dataframe.iterrows():
    date = neuralnet_date.activate(row)
    amount = neuralnet_amount.activate(row)
    prediction_df['Expected Date'].ix[index] = date
    prediction_df['Expected Amount'].ix[index] = amount

【问题讨论】:

    标签: python-2.7 pybrain


    【解决方案1】:

    看起来您正在训练 30 个 epoch,这对于小型网络来说也是不够的。根据您的网络大小,某些节点可能没有经过适当的训练。您是否尝试设置 continueEpochs=30?这是该函数的第四个输入。

    也可能是您没有正确规范化输入数据,如果第一个建议不能解决问题,您能否发布一个训练数据示例?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2015-03-25
      • 1970-01-01
      • 2012-03-12
      • 2013-06-06
      • 1970-01-01
      • 2013-04-26
      相关资源
      最近更新 更多