Ошибка Keras (R) при выполнении генератора подгонки

У меня ошибка при использовании fit_generator в R... вот мой код..`

model <- keras_model_sequential()

model %>%
  layer_conv_2d(32, c(3,3), input_shape = c(64, 64, 3)) %>%
  layer_activation("relu") %>%
  layer_max_pooling_2d(pool_size = c(2,2)) %>%
  layer_conv_2d(32, c(3, 3)) %>%
  layer_activation("relu") %>%
  layer_max_pooling_2d(pool_size = c(2, 2)) %>%
  layer_flatten() %>%
  layer_dense(128) %>%
  layer_activation("relu") %>%
  layer_dense(128) %>%
  layer_activation("relu") %>%
  layer_dense(2) %>%
  layer_activation("softmax")

opt <- optimizer_adam(lr = 0.001, decay = 1e-6)

model %>%
  compile(loss = "categorical_crossentropy", optimizer = opt, metrics = "accuracy")

train_gen <- image_data_generator(rescale = 1./255,
                                  shear_range = 0.2,
                                  zoom_range = 0.2,
                                  horizontal_flip = T)

test_gen <- image_data_generator(rescale = 1./255)

train_set = train_gen$flow_from_directory('dataset/training_set',
                                          target_size = c(64, 64),
                                          class_mode = "categorical")

test_set = test_gen$flow_from_directory('dataset/test_set',
                                        target_size = c(64, 64),
                                        batch_size = 32,
                                        class_mode = 'categorical')

model$fit_generator(train_set,
                    steps_per_epoch = 50,
                    epochs = 10)

Ошибка: ошибка в py_call_impl(callable, dots$args, dots$keywords): StopIteration: объект 'float' не может быть интерпретирован как целое число

Если я поставлю набор проверки, у него будет еще одна ошибка bool (validation_data). Плавающая ошибка..


person saeed_ar    schedule 09.05.2018    source источник


Ответы (1)


Трудно помочь вам без минимального воспроизводимого примера.

Я предполагаю, что вы получаете эту ошибку, когда пытаетесь запустить

train_set = train_gen$flow_from_directory('dataset/training_set',
                                          target_size = c(64, 64),
                                          class_mode = "categorical")

Здесь вы сами вызываете функцию python, используя reticulate, а не оболочку keras (пакет R). Это может сработать, но вы должны более явно указать тип и использовать target_size = as.integer(c(64, 64)), так как python ожидает целое число.

В качестве альтернативы я бы предложил изучить функцию flow_images_from_directory(), включенную в пакет keras.


То же самое касается

model$fit_generator(train_set,
                    steps_per_epoch = 50,
                    epochs = 10)

я бы предложил изучить

model %>% 
  fit_generator()

вместо этого, который является частью пакета keras.

person Mikael Poul Johannesson    schedule 09.05.2018
comment
Это сработало... Но теперь у меня новая ошибка.. CUBLAS_STATUS_ALLOC_FAILED - person saeed_ar; 10.05.2018
comment
Попробуйте вместо этого использовать функции keras, о которых я упоминал (flow_images_from_directory() и model %>% fit_generator()). - person Mikael Poul Johannesson; 10.05.2018
comment
Я использовал его flow_images_from_directory внутри model%›% fit_generator(), после чего я получил эту новую ошибку CUBLAS_STATUS_ALLOC_FAILED, похоже, проблема Cuda, но Keras работает в Python, хотя.. - person saeed_ar; 11.05.2018