根据文档的定义:
批量大小:每次梯度更新的样本数。
每个周期的步骤数:在宣布一个周期结束并开始下一个周期之前的总步骤数(样本批次)。
它们有什么不同,它们之间是如何相互依赖的,如果有的话?
回答:
这里有一个简单的例子。假设你有1000个训练样本,并且你将批量大小设置为50。在这种情况下,如果你想在每个周期中遍历所有训练数据一次,你需要运行1000/50 = 20个数据批次。因此,你设置steps_per_epoch=20。许多人设置steps_per_epoch=训练样本数量//批量大小。这是一个在每个周期中遍历所有训练样本的好方法,但只有当批量大小是训练样本数量的因子时才完全准确。下面是我编写的一段代码,用于确定批量大小和steps_per_epoch,以便在每个周期中精确遍历一次样本。在代码中,length等于样本数量,b_max是基于内存限制你允许的最大批量大小。
batch_size=sorted([int(length/n) for n in range(1,length+1) if length % n ==0 and length/n<=b_max],reverse=True)[0] steps=int(length/batch_size)
对于训练来说,如果你打乱了数据,精确地遍历训练集一次并不那么重要。然而,对于验证和测试来说,精确地遍历验证集或测试集一次是很重要的,以便获得完全准确的结果。