插入符号库中的神经网络方法的所有预测都是相同的

问题描述 投票:0回答:0

使用 Caret 库的 train() 方法训练的神经网络模型对测试数据集产生完全相同的预测值。此外,使用相同的调整参数 train() 函数比直接使用 neuralnet() 花费的时间要长得多。预测变量的范围归一化为 (0, 1)。

以下代码运行速度很快并给出了合理的结果,即测试数据的预测并不完全相同。

neuralnet(MEDV ~ . , bh.norm.tr, linear.output = TRUE, hidden = 3)

但是,当我使用具有相同参数的 Caret 时:

layer.grid <- expand.grid(layer1 = 3, layer2 = 0, layer3 = 0)
nnCtrl <- trainControl(method = 'none')
bh.MEDV.cv.nn <- train(MEDV ~ . , data = bh.norm.tr,
                    method = "neuralnet", 
                    trControl = nnCtrl,
                    tuneGrid = layer.grid)

此代码运行时间太长,例如运行 10 分钟以上,并且给出的结果比直接使用 neuralnet() 更差。

更让我困惑的是,如果我使用稍微复杂一点的网络,比如:

layer.grid <- expand.grid(layer1 = 3, layer2 = 2, layer3 = 0)
nnCtrl <- trainControl(method = 'cv')

然后,验证数据的所有预测都是完全相同的数字。

所有预测变量都是范围归一化的。我还在 train() 中使用了 learningrate = .01 参数,但没有任何区别。

此时我完全迷路了。任何指导将不胜感激。

nnCtrl <- trainControl(method = 'none')

r r-caret
© www.soinside.com 2019 - 2024. All rights reserved.