我在训练神经网络时收到错误“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 发送电子邮件脚本