0

我正在尝试第一次在 r 中使用 nnet 运行神经网络模型。当我为“size”参数提供一系列值时,出现以下错误:

Error in nnet.default(x, y, w, entropy = TRUE, ...) :
  initial value in 'vmmin' is not finite

但是,当我将单个值传递给“size”参数时,该函数可以正常工作。为什么会发生此错误,我该如何解决?

这是一个可重现的示例:

Var1 <- rnorm(100, 1, 2)
Var2 <- rnorm(100, 1, 2)
Var3 <- rnorm(100, 1, 2)
Var4 <- rnorm(100, 1, 2)
Var5 <- as.factor(runif(100)<=.50)
outcome <- as.factor(runif(100)<=.90)
data <- data.frame(outcome, Var1, Var2, Var3, Var4, Var5)
neural_net <- nnet(outcome ~ ., data = data, decay=5e-4, maxit=200, size = seq(from = 2, to = 30, by = 1))

这是我的 R 版本信息:

> version
           _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          4.0                         
year           2017                        
month          04                          
day            21                          
svn rev        72570                       
language       R                           
version.string R version 3.4.0 (2017-04-21)
nickname       You Stupid Darkness  

谢谢!

4

1 回答 1

0

nnet仅适合单隐藏层神经网络,因此size(隐藏层中的神经元数量)只能是标量。

nnet 包现在已经过时了。它可以追溯到 1990 年代,当时深度学习的所有当前进展都尚未取得。如果您想了解 R 中的神经网络,请考虑使用更现代的包,例如 RStudio 的tensorflow或 Microsoft R 的MicrosoftML。后者实际上是机器学习算法的工具包,包括随机森林、增强树和除 NN 之外的其他算法。

于 2017-07-20T14:34:09.657 回答