我是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])
时,即特定的
数据项,它不会给我与上一批中相同的预测。
它不应该给我相同的结果吗?重量和一切都设定了,它应该每次给出相同的结果,不是吗?或者批量预测是否以某种方式相互依赖?
编辑:实际上我发现连续几次运行预测线,每次答案都不同!这是预期的吗?我很困惑,因为我认为网络的权重和偏差是设定的?我错了吗 ?
答案 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_1
和Pred_2
现在应该是相同的。