Пакет R keras: функция fit_generator показывает «IndexError: список индексов вне диапазона» - PullRequest
0 голосов
/ 15 мая 2019

Использование набора данных из Kaggle dogs-vs-cats

  • данные поезда = 1000 изображений (кошки),
  • данные проверки = 500 изображений (кошки)

Генератор (datagen) рисует партии 20 изображений

Таким образом,

steps_per_epoch = 50 с 20x50 = 1000

validation_steps = 25 с 25x20 = 500

model <- keras_model_sequential() %>%

  layer_conv_2d(filters = 32, kernel_size = c(3, 3), activation = "relu", input_shape = c(150, 150, 3)) %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) %>%

  layer_conv_2d(filters = 64, kernel_size = c(3, 3), activation = "relu") %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) %>%

  layer_conv_2d(filters = 128, kernel_size = c(3, 3), activation = "relu") %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) %>%

  layer_conv_2d(filters = 128, kernel_size = c(3, 3), activation = "relu") %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) %>%

  layer_flatten() %>%

  layer_dropout(rate = 0.5) %>%

  layer_dense(units = 512, activation = "relu") %>%
  layer_dense(units = 1, activation = "sigmoid")

model %>% compile(
  loss = "binary_crossentropy",
  optimizer = optimizer_rmsprop(lr = 1e-4), metrics = c("acc")
)

# Use augmented images:

datagen <- image_data_generator(
  rescale = 1/255,
  rotation_range = 40,
  width_shift_range = 0.2,
  height_shift_range = 0.2,
  shear_range = 0.2,
  zoom_range = 0.2,
  horizontal_flip = TRUE
)

# Note that the validation data shouldn’t be augmented!

test_datagen <-
  image_data_generator(rescale = 1/255)

train_generator <- flow_images_from_directory(
  train_dir,
  datagen,
  target_size = c(150, 150),
  batch_size = 20,
  class_mode = "binary"
)

validation_generator <- flow_images_from_directory(
  validation_dir,
  test_datagen,
  target_size = c(150, 150),
  batch_size = 20,
  class_mode = "binary"
)

## Train model:

history <- model %>% fit_generator(
  train_generator,
  steps_per_epoch = 50,
  epochs = 30,
  validation_data = validation_generator,
  validation_steps = 25
)

Вот обратная связь с RStudio

Error in py_call_impl(callable, dotsargs, dotsargs,dotskeywords) : IndexError: list index out of range

stop(structure(list(message = "IndexError: list index out of range", call = py_call_impl(callable, dotsargs, dotsargs,dotskeywords), cppstack = structure(list(file = "", line = -1L, stack = c("/home/boris/R/x86_64-pc-linux-gnu-library/3.6/reticulate/libs/reticulate.so(Rcpp::exception::exception(char const*, bool)+0x7a) [0x7f08f395ea4a]", "/home/boris/R/x86_64-pc-linux-gnu-library/3.6/reticulate/libs/reticulate.so(Rcpp::stop(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x27) [0x7f08f395eba7]", …
finalize at training_utils.py#108
model_iteration at training_generator.py#208
fit_generator at training.py#1426
(structure(function (…) { dots <- py_resolve_dots(list(…)) result <- py_call_impl(callable, dotsargs, dotsargs,dotskeywords) …
do.call(func, args)
call_generator_function(object$fit_generator, list(generator = generator, steps_per_epoch = as.integer(steps_per_epoch), epochs = as.integer(epochs), verbose = as.integer(verbose), callbacks = normalize_callbacks(view_metrics, callbacks), validation_data = validation_data, validation_steps = as_nullable_integer(validation_steps), …
fit_generator(., train_generator, steps_per_epoch = 50, epochs = 30, validation_data = validation_generator, validation_steps = 25)
function_list[k]
withVisible(function_list[k])
freduce(value, ‘_function_list’)
‘_fseq’(‘_lhs’)
eval(quote(‘_fseq’(‘_lhs’)), env, env)
eval(quote(‘_fseq’(‘_lhs’)), env, env)
withVisible(eval(quote(‘_fseq’(‘_lhs’)), env, env))
model %>% fit_generator(train_generator, steps_per_epoch = 50, epochs = 30, validation_data = validation_generator, validation_steps = 25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...