Как использовать функцию repeat () при построении данных в Keras? - PullRequest
0 голосов
/ 03 марта 2020

Я обучаю двоичный классификатор на наборе данных о кошках и собаках: Общий набор данных: 10000 изображений Набор обучающих данных: 8000 изображений Валидация / тестовый набор данных: 2000 изображений

Код ноутбука Jupyter:

# Part 2 - Fitting the CNN to the images
train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

test_datagen = ImageDataGenerator(rescale = 1./255)

training_set = train_datagen.flow_from_directory('dataset/training_set',
                                                 target_size = (64, 64),
                                                 batch_size = 32,
                                                 class_mode = 'binary')

test_set = test_datagen.flow_from_directory('dataset/test_set',
                                            target_size = (64, 64),
                                            batch_size = 32,
                                            class_mode = 'binary')

history = model.fit_generator(training_set,
                              steps_per_epoch=8000,
                              epochs=25,
                              validation_data=test_set,
                              validation_steps=2000)

Я обучил его на CPU без проблем, но когда я запускаю на GPU, он выдает мне эту ошибку:

Found 8000 images belonging to 2 classes.
Found 2000 images belonging to 2 classes.
WARNING:tensorflow:From <ipython-input-8-140743827a71>:23: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
Please use Model.fit, which supports generators.
WARNING:tensorflow:sample_weight modes were coerced from
  ...
    to  
  ['...']
WARNING:tensorflow:sample_weight modes were coerced from
  ...
    to  
  ['...']
Train for 8000 steps, validate for 2000 steps
Epoch 1/25
 250/8000 [..............................] - ETA: 21:50 - loss: 7.6246 - accuracy: 0.5000
WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 200000 batches). You may need to use the repeat() function when building your dataset.
 250/8000 [..............................] - ETA: 21:52 - loss: 7.6246 - accuracy: 0.5000

Я хотел бы знать, как использовать повтор ( ) функция в керасе с использованием Tensorflow 2.0?

1 Ответ

1 голос
/ 03 марта 2020

Ваша проблема связана с тем, что параметры steps_per_epoch и validation_steps должны быть равны общему количеству точек данных, разделенных на размер batch_s.

Ваш код будет работать в Keras 1.X до августа 2017 года.

Измените функцию model.fit на:

history = model.fit_generator(training_set,
                              steps_per_epoch=int(8000/batch_size),
                              epochs=25,
                              validation_data=test_set,
                              validation_steps=int(2000/batch_size))

Начиная с TensorFlow2.1, fit_generator устарела. Вы можете использовать метод .fit() также на генераторах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...