我正在使用 Keras 创建一个深度学习模型,我想知道方法中的参数和方法中的参数有shuffle什么区别?fit_generator()shuffleflow_from_directory()
fit_generator 中的 shuffle 和 flow_from_directory 中的 shuffle 有什么区别?
数据挖掘
机器学习
Python
深度学习
喀拉斯
张量流
2022-03-08 03:10:16
1个回答
从fit_generator()文档:
洗牌:布尔值。是否在每个 epoch 开始时打乱批次的顺序。仅与
Sequence(keras.utils.Sequence) 的实例一起使用。steps_per_epoch不是时没有 效果None。
因此,如果您使用生成器并进行设置steps_per_epoch,它将无效。如果使用Sequence生成器,它将在每个时期以不同的顺序获取批次。例如,在第一个时期它可能会得到my_seq[0]然后my_seq[1]然后my_seq[2](等等),在第二个时期它可能会在下一个时期得到my_seq[2]然后my_seq[0]然后my_seq[1]等等(即注意这my_seq[i]是由Sequence我们定义的生成器)。
从flow_from_directory()文档:
shuffle : 是否打乱数据(默认:
True)
目前尚不清楚何时以及如何进行洗牌。所以我们必须看一下源代码。通过这样做,我们发现该flow_from_directory()方法返回一个类的实例DirectoryIterator,在其文档字符串中我们可以看到以下内容:
shuffle:布尔值,是否在 epoch 之间打乱数据。
所以它会在每个时期开始时打乱所有数据(即在每个时期要读取的所有训练图像的列表)。