gpt4 book ai didi

R:nrow[w] * ncol[w] 中的错误:二元运算符的非数字参数,同时使用神经网络包

转载 作者:行者123 更新时间:2023-12-04 12:36:00 25 4
gpt4 key购买 nike

我正在使用神经网络包来训练分类器。
训练数据如下所示:

> head(train_data)
mvar_12 mvar_40 v10 mvar_1 mvar_2 Labels
1 136.51551310 6 0 656.78784220 0 0
2 145.10739860 87 0 14.21413596 0 0
3 194.74940330 4 0 196.62888080 0 0
4 202.38663480 2 0 702.27307720 0 1
5 60.14319809 9 0 -1.00000000 -1 0
6 95.46539380 6 0 539.09479640 0 0

代码如下:
n <- names(train_data)
f <- as.formula(paste("Labels ~", paste(n[!n %in% "Labels"], collapse = " + ")))
library(neuralnet)
nn <- neuralnet(f, tr_nn, hidden = 4, threshold = 0.01,
stepmax = 1e+05, rep = 1,
lifesign.step = 1000,
algorithm = "rprop+")

当我尝试对测试集进行预测时出现问题:
pred <- compute(nn, cv_data)

其中 cv_data 看起来像:
> head(cv_data)
mvar_12 mvar_40 v10 mvar_1 mvar_2
1 213.84248210 1 9 -1.000000000 -1
2 110.73985680 0 0 -1.000000000 -1
3 152.74463010 14 0 189.521812800 -1
4 64.91646778 7 0 47.854257730 -1
5 141.28878280 12 0 248.557857500 5
6 55.36992840 2 0 4.785425773 -1

为此,我收到一条错误消息:
Error in nrow[w] * ncol[w] : non-numeric argument to binary operator
In addition: Warning message:
In is.na(weights) : is.na() applied to non-(list or vector) of type 'NULL'

为什么我会收到这个错误,我该如何解决?

最佳答案

我刚刚遇到了同样的问题。查看compute的源代码函数,我们可以看到它假设只有在网络完美地完成训练时才定义的结果属性之一(即 weights )。

> trace("compute",edit=TRUE)
function (x, covariate, rep = 1) {
nn <- x
linear.output <- nn$linear.output
weights <- nn$weights[[rep]]
[...]
}

我认为真正的问题在于 neuralnet一旦到达 stepmax 不保存当前网络值,稍后在 compute 中导致此错误代码。

编辑

您似乎可以通过注释 calculate.neuralnet 的第 65 和 66 行来避免这种重置。功能
> fixInNamespace("calculate.neuralnet", pos="package:neuralnet")
[...]
#if (reached.threshold > threshold)
# return(result = list(output.vector = NULL, weights = NULL))
[...]

然后一切都像一个魅力:)

关于R:nrow[w] * ncol[w] 中的错误:二元运算符的非数字参数,同时使用神经网络包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com