RSNNS elman网络

时间:2016-03-01 01:46:55

标签: r

我是R和神经网络的新手。所以我训练并预测了一个像这样的elman网络:

require ( RSNNS )
mydata = read.csv("mydata.csv",header = TRUE)
mydata.train = mydata[1000:7000,]
mydata.test = mydata[800:999,]

fit <- elman ( mydata.train[,2:19],mydata.train[,1], size =100 
     learnFuncParams =c (0.1) , maxit =1000)
pred <-predict (fit , mydata.test[,2:19])

所以pred包含预测。我遇到的问题是 当我运行pred <-predict (fit , mydata.test[1,2:19])时,即特定的 数据项,它不会给我与上一批中相同的预测。 它不应该给我相同的结果吗?重量和一切都设定了,它应该每次给出相同的结果,不是吗?或者批量预测是否以某种方式相互依赖?

编辑:实际上我发现连续几次运行预测线,每次答案都不同!这是预期的吗?我很困惑,因为我认为网络的权重和偏差是设定的?我错了吗 ?

2 个答案:

答案 0 :(得分:0)

在调用elman函数之前,请调用 set.seed(0)

这将初始化随机数生成器,如果您多次执行相同的命令序列,将导致相同的结果。对于不同的初始化,请调用set.seed(1)

require ( RSNNS )
mydata <- read.csv("mydata.csv",header = TRUE)
mydata.train <- mydata[1000:7000,]
mydata.test <- mydata[800:999,]

set.seed(0)
fit <- elman ( mydata.train[,2:19], mydata.train[,1], size=100, 
               learnFuncParams=c(0.1) , maxit=1000 )

pred <- predict ( fit , mydata.test[,2:19] )

答案 1 :(得分:0)

Elman网络根据输入加上前一时间步骤中一组隐藏单位的状态来预测输出。因此,在您使用预测之前,网络的内存与您使用预测之后的内存不同。

重置网络记忆的技巧&#39;使用训练样本中的输入预测(训练)目标。

require ( RSNNS )
mydata = read.csv("mydata.csv",header = TRUE)
mydata.train = mydata[1000:7000,]
mydata.test = mydata[800:999,]

fit <- elman ( mydata.train[,2:19],mydata.train[,1], size =100 
     learnFuncParams =c (0.1) , maxit =1000)

pred_1 <-predict (fit , mydata.test[,2:19])
resetNet <- predict(fit, mydata.train[,2:19])
pred_2 <-predict (fit , mydata.test[,2:19])

Pred_1Pred_2现在应该是相同的。