R中的神经网络包 - 如何在训练收敛之前获取权重?

9

我希望绘制一个学习曲线,以查看神经网络在训练期间的进展。水平轴是总迭代次数,垂直轴表示错误率。我想在网络训练过程中同时查看测试集和训练集的错误率。

nn <- neuralnet(f, 
            data = train, 
            hidden = 2, 
            linear.output = F, 
            threshold = 0.01,
            stepmax = 10,
            lifesign = "full",
            learningrate = .1,
            algorithm='backprop')

通过设置stepmax=10(或50或?),我希望能够在收敛之前检查网络,查看测试集和训练集的错误率,然后继续训练另外10步。这个(部分)训练好的神经网络被命名为nn,我计划将起始权重设置为中断训练获得的权重,如下:

# Try to further train alerady trained net
nn <- neuralnet(f, 
            data = train, 
            hidden = 2, 
            linear.output = F, 
            threshold = 0.01,
            lifesign = "full",
            learningrate = .1,
            startweights = nn$weights,
            algorithm='backprop')

然而,训练发出了警告:“算法在stepmax中的1个重复中未收敛”。我并没有期望它会收敛,但是这10个完成的训练步骤应该已经修改了最初的随机权重。然而,nn$weights为空。

是否有人知道如何通过neuralnet来实现这一点?

1个回答

8

我直接联系了neuralnet软件包的一位作者Frauke Guenther,并得到了他的明确回答:

“非常遗憾,目前只有在网络收敛时才会保存训练好的权重。还没有实现能够在训练过程中或者网络未收敛时访问权重的功能。”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接