Google Cloud не возвращает значение метри c при настройке гиперпараметра с помощью Keras - PullRequest
0 голосов
/ 28 апреля 2020

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

...