【问题标题】:Library neurolab training newff图书馆神经实验室培训 newff
【发布时间】:2015-06-16 09:07:12
【问题描述】:

我在使用 python 和neurolab 方面还很陌生,但我在训练前馈神经网络时遇到了问题。我已经建立了如下网络:

net = nl.net.newff([[-1,1]]*64, [60,1])
net.init()
testerr = net.train(InputT, TargetT, epochs=100, show=1)

我的目标输出是一个介于 0 和 4 之间的向量。 当我使用控制台中的 nl.train.train_bfgs 时:

testerr = net.train(InputT, TargetT, epochs=10, show=1)
Epoch: 1; Error: 55670.4462766;
Epoch: 2; Error: 55649.5;

如您所见,我将 epoch 数固定为 100,但它会在第二个 epoch 和Netresults=net.sim(InputCross) 测试网络后停止 我有一个 1 的向量作为测试输出数组(完全错误)。 如果我使用其他训练函数,我有相同的输出测试向量,全为 1,但在这种情况下,在训练期间,epoch 达到我设置的数量,但显示的错误不会改变。 如果目标输出向量介于 -1 和 1 之间,则相同。 有什么建议吗? 非常感谢!

【问题讨论】:

    标签: python configuration neural-network training-data


    【解决方案1】:

    最后,在遇到同样的问题几个小时后,我解决了这个问题。

    以下是正在发生的事情:Neurolab 使用 train_bfgs 作为其标准训练算法。 train_bfgs 从 scipy.optimize 运行 fmin_bfgs。作为参数,给出了一个函数 epochf。在训练网络时,必须在每次迭代后运行此函数,以便神经实验室正确退出。可悲的是,当“优化成功终止”时 fmin_bfgs 无法执行此操作(可以将 self.kwargs['disp'] = 1 从 /neurolab/train/spo.py 传递给 fmin_bfgs 以查看 scipy 的输出)。我没有进一步调查为什么 fmin_bfgs 返回“优化成功终止”,但这与错误正在收敛有关。

    我已尝试使用 scipy 版本 12.0 到 0.15 的 python 2.7 和 python 3,但没有改变这种行为(如 this suggested)。

    我的解决方案是简单地从 train_bfgs 训练切换到常规 train_gd(梯度下降),但我想任何其他训练算法都可以。

    net = nl.net.newff(inputNodes, [ hidden, output])
    
    #change traning func
    net.trainf = nl.train.train_gd
    

    为了完整起见,我测试的代码是:

    import neurolab as nl
    hidden = 10
    output = 1
    test = [[0],[0],[0],[1],[1]]
    net = nl.net.newff([[0,1]], [ 10, 1])
    err = net.train(test, test, epochs = 500, show=1)
    

    问题只是有时会出现,所以需要重复测试

    编辑:https://github.com/zueve/neurolab/issues/25也描述了这个问题

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2016-02-27
      • 2012-10-14
      • 1970-01-01
      • 2016-02-05
      相关资源
      最近更新 更多