我在训练神经网络时收到错误“nnet.default(x, y, w, ...) 中的错误:太多 (77031) 权重”

Posted

技术标签:

【中文标题】我在训练神经网络时收到错误“nnet.default(x, y, w, ...) 中的错误:太多 (77031) 权重”【英文标题】:I get error "Error in nnet.default(x, y, w, ...) : too many (77031) weights" while training neural networks 【发布时间】:2013-06-10 22:55:01 【问题描述】:

我正在尝试使用包nnet 在 R 中训练神经网络。以下是关于我的训练数据的信息。

str(traindata)

'data.frame':   10327 obs. of  196 variables:
$ stars                          : num  5 5 5 3.5 3.5 4.5 3.5 5 5 3.5 ...
$ open                           : num  1 1 1 1 1 1 1 1 1 1 ...
$ city                           : Factor w/ 61 levels "ahwatukee","anthem",..: 36 38
$ review_count                   : int  3 5 4 5 14 6 21 4 14 10 ...
$ name                           : Factor w/ 8204 levels " leftys barber shop",..:
$ longitude                      : num  -112 -112 -112 -112 -112 ...
$ latitude                       : num  33.6 33.6 33.5 33.4 33.7 ...
$ greek                          : int  0 0 0 0 0 0 0 0 0 0 ...
$ breakfast...brunch             : int  0 0 0 0 0 0 0 0 0 0 ...
$ soup                           : int  0 0 0 0 0 0 0 0 0 0 ...

我已截断此信息。

当我运行以下命令时:

library(nnet)  
m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000)

我收到以下错误:

Error in nnet.default(x, y, w, ...) : too many (84581) weights

当我尝试改变参数中的权重时:

m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000,weights=1000)

然后我得到以下错误:

Error in model.frame.default(formula = stars ~ ., data = traindata, weights = 1000) : 
variable lengths differ (found for '(weights)')

我犯了什么错误?如何避免或纠正此错误?也许问题在于我对“权重”的理解。

【问题讨论】:

【参考方案1】:

MaxNWts 增大到适合模型大小的值,或者减小size 使模型更小。

您可能还想进一步考虑模型中要包含哪些变量。单看提供的数据,name是一个因子,有8000多个级别;只有 10000 次观察,你不会从中得到任何明智的结果。 city 可能更有用,但同样,像神经网络这样复杂的事物中的 61 个级别可能是微不足道的。

【讨论】:

“级别”是指“价值”吗? @user1685185,具有十个“值”或“观察值”的变量可能是:“B”; “乙”; “一种”; “一种”; “C”; “乙”; “C”; “一种”; “乙”; “C”。此变量有十个值,但只有三个级别(“A”、“B”、“C”)。【参考方案2】:

将“MaxNWts”选项增加到大于 84581 的值。

【讨论】:

我有同样的问题,增加MaxNWts并不能解决问题【参考方案3】:

用于增加网络中允许的权重数量的选项是MaxNWts,而不是weights(设置为指定每个样本的权重)。

【讨论】:

【参考方案4】:

直接传递 MaxNWts 参数来增加它

m4 <- nnet(stars~.,data=traindata,size=10, maxit=1000,MaxNWts=84581)

【讨论】:

以上是关于我在训练神经网络时收到错误“nnet.default(x, y, w, ...) 中的错误:太多 (77031) 权重”的主要内容,如果未能解决你的问题,请参考以下文章

在网络环境中收到 401 错误时 React Relay Modern 重定向到另一个页面

我在制作我的网络应用程序时遇到了这个操作错误[重复]

对象向量的分段错误

网络响应 200,但收到错误消息; PHP 发送电子邮件脚本

我在我的 oracle 数据库中收到错误“网络适配器无法建立连接”

CNN训练错误执行Tensorflow Python以识别狗和猫的图像