2016-04-20 8 views
1

Ich möchte ein rekurrentes neuronales Netzwerk in R mit dem RSNNS-Paket passen. Das Paket bietet die Option zum Festlegen der Anzahl der maximalen Iterationen, wie im folgenden Beispielcode unter maxit = 1000. Ist es möglich zu sehen, wie viele Iterationen der Algorithmus bis zur Konvergenz verwendet hat?Holen Sie die Anzahl der Iterationen bis zur Konvergenz in R RSNNS-Paket

library(RSNNS) 
library(xts) 

#Load Lynx data 
data(lynx) 

#Scale data and convert to xts 
data <- as.xts((lynx - min(lynx))/(max(lynx) - min(lynx))) 

#Build xts object with 5 lags to analyze 
lags <- 5 
for(i in 1:lags){ 

    feat <- lag(lynx, i) 
    data <- merge(data, feat, all = FALSE) 

} 

#Get features and target 
features <- data[,-1] 
target <- data[,1] 

#Fit network 
rnn  <- elman(features, target, maxit = 1000) 

Antwort

1

Ich denke, es läuft standardmäßig die maximale Anzahl von Iterationen. Wenn Sie das Folgende ausführen, wird die Iteration auch nach dem Plateau im Diagramm fortgesetzt.

rnn <- elman(features, target, maxit = 1000) 
plotIterativeError(rnn) 

#then run this 
rnn <- elman(features, target, maxit = 10000) 
plotIterativeError(rnn) 

Sie können sich wahrscheinlich head(which(abs(diff(rnn$IterativeFitError)) < 1e-20), 1) verwenden, um die Iterationsschritt zu finden, wenn sie konvergiert.

+0

Gibt es eine Möglichkeit, die Funktion zu stoppen, wenn ein Fehlerkriterium erfüllt ist? –

+1

Wenn ich mich richtig erinnere, ruft es den internen C-Code auf. Sie können die Funktion in der Konsole drucken und überprüfen. Wenn dies der Fall ist, müssen Sie den C-Code ändern und erneut kompilieren. – chinsoon12

Verwandte Themen