2024-10-02 14:27:11 发布
网友
我想知道,如果将Keras model.fitsteps_per_epoch参数设置为小于(数据集中的样本数/批量大小)的固定值,是否将始终使用数据集中的相同样本(从样本0到样本[(steps_per_epoch*批量大小)-1]),从而减小训练集的有效大小,还是从每个历元的批量大小的训练集(不替换)中获取每个历元的随机样本
Rgds
亚历克斯
通过在自定义批处理生成器中添加print()行,您可以在培训期间轻松查看每个批处理中的元素。您将看到批处理在每个时代之间随机排列(但是如果shuffle设置为False,则每个时代内的样本将不会排列)
print()
shuffle
False
batch_size = 2
shuffle = False
steps_per_epoch = 10//2 = 5
batch_1 = [1,2]
batch_2 = [3,4]
batch_5 = [9,10]
batch_4 = [7,8]
batch_1
batch_3
因此,即使steps_per_epoch参数小于推荐的size_of_dataset // batch_size,我们也可以推断批仍将随机排列,这意味着您的模型在培训期间仍将看到整个数据集。请注意,这个问题在shuffle = True中并不重要,因为批中的元素将在每个历元从整个数据集中随机生成
steps_per_epoch
size_of_dataset // batch_size
shuffle = True
最后,我只想与大家分享this answer,它描述了一个简化的steps_per_epoch的有趣用法
通过在自定义批处理生成器中添加
例如,考虑一个10个样本的数据集,其中每一个样本都可以用唯一的数字来标识。如果,比方说,print()
行,您可以在培训期间轻松查看每个批处理中的元素。您将看到批处理在每个时代之间随机排列(但是如果shuffle
设置为False
,则每个时代内的样本将不会排列)batch_size = 2
、shuffle = False
和steps_per_epoch = 10//2 = 5
,那么在第一个历元期间,批将按顺序调用(batch_1 = [1,2]
、batch_2 = [3,4]
、batch_5 = [9,10]
)。但是在这个历元之后,批将被随机排列:例如,我们将有第二个历元batch_4 = [7,8]
,然后batch_1
,batch_3
等等。。。等等,直到训练结束因此,即使
steps_per_epoch
参数小于推荐的size_of_dataset // batch_size
,我们也可以推断批仍将随机排列,这意味着您的模型在培训期间仍将看到整个数据集。请注意,这个问题在shuffle = True
中并不重要,因为批中的元素将在每个历元从整个数据集中随机生成最后,我只想与大家分享this answer,它描述了一个简化的
steps_per_epoch
的有趣用法相关问题 更多 >
编程相关推荐