в чем разница в batch_size в fit() и image_dataset_from_directory()?

#python #tensorflow #keras #deep-learning

#python #тензорный поток #keras #глубокое обучение

Вопрос:

Я пытался изменить размер пакета во время обучения, поэтому я запускаю метод fit в цикле и изменяю размер пакета, но мы уже определяем размер пакета image_dataset_from_directory() , что, если я помещу разные размеры пакета в эти две функции, и есть ли способ, которым я могу контролировать размер пакета в методе fitи не будет зависеть от image_dataset_from_directory() моего кода

   train_ds = tf.keras.preprocessing.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)

  model.fit(
      
            train_ds,
            validation_data=val_ds,
            epochs=epoch,
            batch_size=batch_size,
            steps_per_epoch=10,
            callbacks=call

            )
 

код взят из этого руководства по tensorflow

Ответ №1:

image_dataset_from_directory это генератор, и поэтому указание batch_size in model.fit() ничего не даст. Смотрите Документы по model.fit() :

размер пакета целое число или нет. Количество выборок для каждого обновления градиента. Если не указано, batch_size по умолчанию будет равен 32. Не указывайте batch_size, если ваши данные представлены в виде наборов данных, генераторов или keras.utils.Экземпляры последовательности (поскольку они генерируют пакеты).

Как вы можете видеть в приведенном вами примере, в руководстве по Tensorflow не указано batch_size в model.fit() :

 epochs=10
history = model.fit(
  train_ds,
  validation_data=val_ds,
  epochs=epochs
)
 

Размер пакета будет таким, какой вы указали в генераторе, и аргумент будет проигнорирован в model.fit()