0

我在训练时尝试更改批量大小,所以我在循环中运行 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教程

4

1 回答 1

2

image_dataset_from_directory是一个生成器,因此指定batch_sizeinmodel.fit()将无济于事。请参阅以下文档model.fit()

batch_size整数或无。每次梯度更新的样本数。如果未指定,batch_size 将默认为 32。如果您的数据是数据集、生成器或 keras.utils.Sequence 实例的形式(因为它们会生成批次),请不要指定 batch_size。

batch_size正如您在您提到的示例中看到的那样,Tensorflow 教程没有指定model.fit()

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

批量大小将是您在生成器中指定的大小,并且该参数将在model.fit()

于 2021-03-03T17:46:31.623 回答