Параметр размера настройки для нейронной сети

Я хочу приспособить модель нейронной сети с использованием пакета каретки. Есть 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 параметр, позволяющий взять под контроль максимальное количество скрытых юнитов.

Другие вопросы по тегам