Я пытаюсь следовать руководству Keras (https://tensorflow.rstudio.com/tools/cloudml/tuning/) для настройки гиперпараметра с несколькими изменениями в файле конфигурации YAML (который я представил из-за ошибки runtimeVersion). После отправки работы с библиотекой CloudML я вижу в журналах, что модель обучается (эпохи запущены), но после прохождения всех эпох все испытания HyperTune показывают состояние «Сбой».
Ниже приведена модель, которую я пытаюсь настроить:
library(keras)
FLAGS <- flags(
flag_integer("dense_units1", 128),
flag_numeric("dropout1", 0.4),
flag_integer("dense_units2", 128),
flag_numeric("dropout2", 0.3)
)
mnist <- dataset_mnist()
x_train <- mnist$train$x
y_train <- mnist$train$y
x_test <- mnist$test$x
y_test <- mnist$test$y
x_train <- array_reshape(x_train, c(nrow(x_train), 784))
x_test <- array_reshape(x_test, c(nrow(x_test), 784))
x_train <- x_train / 255
x_test <- x_test / 255
y_train <- to_categorical(y_train, 10)
y_test <- to_categorical(y_test, 10)
model <- keras_model_sequential() %>%
layer_dense(units = FLAGS$dense_units1, activation = 'relu',
input_shape = c(784)) %>%
layer_dropout(rate = FLAGS$dropout1) %>%
layer_dense(units = FLAGS$dense_units2, activation = 'relu') %>%
layer_dropout(rate = FLAGS$dropout2) %>%
layer_dense(units = 10, activation = 'softmax')
model %>% compile(
loss = 'categorical_crossentropy',
optimizer = optimizer_rmsprop(),
metrics = c('accuracy')
)
model %>% fit(
x_train, y_train,
epochs = 20, batch_size = 128,
validation_split = 0.2
)
и вот код для моего файла конфигурации:
trainingInput:
scaleTier: CUSTOM
masterType: "n1-standard-4"
runtimeVersion: "1.15"
hyperparameters:
goal: MAXIMIZE
hyperparameterMetricTag: "acc"
maxTrials: 10
maxParallelTrials: 2
params:
- parameterName: "dropout1"
type: DOUBLE
minValue: 0.2
maxValue: 0.6
scaleType: UNIT_LINEAR_SCALE
- parameterName: "dropout2"
type: DOUBLE
minValue: 0.1
maxValue: 0.5
scaleType: UNIT_LINEAR_SCALE
Вывод JSON примерная пробная версия выглядит следующим образом:
{
"trialId": "8",
"hyperparameters": {
"dropout1": "0.59895355546833817",
"dropout2": "0.10417636518800295"
},
"startTime": "2020-04-28T15:13:30.645077193Z",
"endTime": "2020-04-28T15:22:47Z",
"state": "FAILED"
}
],
"consumedMLUnits": 0.52,
"isHyperparameterTuningJob": true,
"hyperparameterMetricTag": "acc"
}
Как и в учебном пособии, я использую пакет R CloudML для передачи работы в Google Cloud Platform. Есть ли причина, по которой гипертюнинг не возвращает точность должным образом?