2016-06-27 6 views
0

neuralnetでモデルを訓練しましたが、結果をExcelで計算する方法を理解しようとしています。パッケージから呼び出すcompute関数を使用すると、すべて正常に動作します。しかし、私はRstudioにF2を使用したソースコードに行き、github pageと機能が動作していないとrelist()機能に停止し、エラーを与える:Error in relist(weights, nrow.weights, ncol.weights) : unused argument (ncol.weights)neuralnet Rの計算機能が再現すると動作しない

私は問題がrelist()機能だと思いますが、私は知りませんそれを使わないで重みを変換する方法。 neuralnetパッケージには、relist()という独自のバージョンは付属していません。 relist行を無視すると、weightsが正しく変換されなかったため、​​というエラーが表示されます。私は自分のデータで同じことを試み、同じエラーが発生しました。

library(neuralnet) 
normalize <-function(x) { 
    return((x - min(x))/(max(x) - min(x))) 
} 
newdf <- Cars93 
newdf = na.omit(newdf) 
newdf <- newdf[complete.cases(newdf),] 
newdf$Cylinders <- as.numeric(levels(newdf$Cylinders))[newdf$Cylinders] 
newdf$Horsepower <- normalize(newdf$Horsepower) 
newdf$EngineSize <- normalize(newdf$EngineSize) 
newdf$Cylinders <- normalize(newdf$Cylinders) 
smp_size <- floor(0.75 * nrow(newdf)) 
set.seed(12) 
train_ind <- sample(seq_len(nrow(newdf)), size = smp_size) 
train <- newdf[train_ind, ] 
test <- newdf[-train_ind, ] 

carsNN <- neuralnet(Horsepower ~ Cylinders+EngineSize, 
        data = train,hidden = c(1)) 
cars_results = compute(carsNN,test[11:12]) 

#this is the source code using F2 in RStudio and on github 
sourceCodeCompute = function (x, covariate, rep = 1) 
{ 
    nn <- x 
    linear.output <- nn$linear.output 
    weights <- nn$weights[[rep]] 
    nrow.weights <- sapply(weights, nrow) 
    ncol.weights <- sapply(weights, ncol) 
    weights <- unlist(weights) 
    if (any(is.na(weights))) 
    weights[is.na(weights)] <- 0 
    weights <- relist(weights, nrow.weights, ncol.weights) 
    length.weights <- length(weights) 
    covariate <- as.matrix(cbind(1, covariate)) 
    act.fct <- nn$act.fct 
    neurons <- list(covariate) 
    if (length.weights > 1) 
    for (i in 1:(length.weights - 1)) { 
     temp <- neurons[[i]] %*% weights[[i]] 
     act.temp <- act.fct(temp) 
     neurons[[i + 1]] <- cbind(1, act.temp) 
    } 
    temp <- neurons[[length.weights]] %*% weights[[length.weights]] 
    if (linear.output) 
    net.result <- temp 
    else net.result <- act.fct(temp) 
    list(neurons = neurons, net.result = net.result) 
} 

sourceCodeCompute(carsNN,test[11:12]) 

答えて

1

relist機能を間違って使用しています。明示的にneuralnet:::relistを呼び出すことを試みてください。これは、パッケージの名前空間内で自動的に使用される(非通知の)関数です。

(私はこの質問がどのようにExcelに関係するか分かりません)

関連する問題