Параметр размера настройки для нейронной сети
Я хочу приспособить модель нейронной сети с использованием пакета каретки. Есть 208 предикторов, каждый из которых важен и не может быть отброшен. Максимальное значение, которое я могу дать параметру размера, равно 4, после которого я получаю сообщение об ошибке, говорящее о том, что весов слишком много.
> ctrl<-trainControl(method = 'cv',number = 5)
> my.grid <- expand.grid(.decay = 0.1, .size =5)
> nn.fit <- train(train_predictors,train_responses[["r2c1"]],method = "nnet",algorithm = 'backprop', tuneGrid = my.grid,trace=F, linout = TRUE,trControl = ctrl)
Something is wrong; all the RMSE metric values are missing:
RMSE Rsquared MAE
Min. : NA Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA Median : NA
Mean :NaN Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA Max. : NA
NA's :1 NA's :1 NA's :1
Error: Stopping
In addition: Warning messages:
1: model fit failed for Fold1: decay=0.1, size=5 Error in nnet.default(x, y, w, ...) : too many (1051) weights
2: model fit failed for Fold2: decay=0.1, size=5 Error in nnet.default(x, y, w, ...) : too many (1051) weights
3: model fit failed for Fold3: decay=0.1, size=5 Error in nnet.default(x, y, w, ...) : too many (1051) weights
4: model fit failed for Fold4: decay=0.1, size=5 Error in nnet.default(x, y, w, ...) : too many (1051) weights
5: model fit failed for Fold5: decay=0.1, size=5 Error in nnet.default(x, y, w, ...) : too many (1051) weights
6: In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, :
There were missing values in resampled performance measures.
Модель работает очень плохо с 4 нейронами (размер =4). Что я могу сделать, чтобы модель работала, если я хочу иметь более 5 нейронов?
2 ответа
В сетке настройки есть другие параметры, которые вы можете указать для метода nnet. Доступные параметры для каждого метода доступны онлайн, но их трудно найти. Вот мой пример использования mxnet для adam nn:
mxnet_grid_A2 = expand.grid(layer1 = c(10, 12),
layer2 = c(4, 6),
layer3 = 2,
learningrate = c(0.001, 0.0001),
dropout = c(0, 0.2)
beta1 = .9,
beta2 = 0.999,
activation = 'relu')
Вы всегда можете использовать ...
необязательный аргумент из каретки train
метод передачи дополнительных аргументов в базовый метод обучения (в этом случае nnet
). Документация CRAN пакета nnet описывает MaxNwts
параметр, позволяющий взять под контроль максимальное количество скрытых юнитов.