我试图在训练时改变批大小,所以我在循环中运行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教程
image_dataset_from_directory
是一个生成器,因此在model.fit()
中指定batch_size
将不起任何作用。参见model.fit()
的文档:
batch_size整数或无。每次梯度更新的样本数。如果未指定,batch_size将默认为32。如果您的数据是数据集、生成器或keras.utils.Sequence实例(因为它们生成批处理)的形式,则不要指定batch_size。
正如你在刚才提到的例子中看到的,Tensorflow教程没有在model.fit()
中指定batch_size
:
epochs=10
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs
)
批处理大小将是您在生成器中指定的,model.fit()