3

我正在使用 R 包中的nnet函数nnet来开发前馈多层神经网络。我有兴趣在每次训练迭代后获得与输出相关的预测误差的更详细输出。将 trace 参数设置为 TRUE(默认)将在每组十次训练迭代后给我预测误差。但是,我想在每次迭代之后而不是在每组十次之后得到预测误差。

使用帮助文件中示例代码的修改部分显示初始预测误差、10、20 等次迭代后的预测误差以及达到最大迭代次数后的最终预测误差:

data(iris)     
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
ir1 <- nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
                 decay = 5e-4, maxit = 50)

输出:

# weights:  19
initial  value 55.824151 
iter  10 value 49.096486
iter  20 value 37.871175
iter  30 value 25.536477
iter  40 value 1.498461
iter  50 value 0.954119
final  value 0.954119 
stopped after 50 iterations

使用解决方法,我可以在每次训练迭代后得到错误:

errors<-NULL
for(i in 1:50){
  set.seed(50)
  mod<-nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
           decay = 5e-4, maxit = i)
  errors<-rbind(errors,c(i,mod$value))         
  }

出于显而易见的原因,解决方法非常低效,我想知道是否可以调整源代码以在每次训练迭代后返回错误,而不是在每组十次训练迭代后返回错误。我尝试调整 nnet.default 的代码,但没有这样的运气。

提前致谢。

4

0 回答 0