从Keras预处理ImageDataGenerator模块,flow_from_directory方法用于从包含图像子目录的目录创建Iterator。迭代器无限期地运行创建批量图像。我的问题是,它是否遍历每个时期的每个样本?
例如,如果我总共有300个图像,而我的批量大小为30,如果我执行10个步骤,它是否会迭代每个样本一次?或者每个步骤是整个数据集中的独立随机样本?如果我们迭代遍历每个样本,当样本大小不能被批量大小整除时会发生什么(如304图像)?在步骤11,迭代器是否知道先获取最后4个样本,然后从整个数据集中获取另外26个样本?
根据我从这里的代码行https://keras.io/preprocessing/image/和https://github.com/keras-team/keras/blob/master/keras/preprocessing/image.py的理解,是的,它遍历所有样本,并在number_batches >= len(x_train) / batch_size
时停止。它为每个时代都做到了,但如果shuffle = True
,每个时代的批次可能会有所不同。