Sad*_*afi 3 machine-learning neural-network deep-learning keras tensorflow
根据文档中的定义 :
批量大小:每次梯度更新的样本数。
每个纪元的步骤:声明一个纪元完成并开始下一个纪元之前的总步骤数(样本批次)
它们有何不同?如果不同的话,它们又如何相互依赖?
这是一个简单的例子。假设您有 1,000 个训练样本,并且将批量大小设置为 50。在这种情况下,如果您想在每个时期遍历一次所有训练数据,则需要运行 1000/50 =20 批数据。为此,您设置steps_per_epoch= 20。许多人设置steps_per_epoch=训练样本数//batch_size。这是一个很好的近似值,可以在一个时期内遍历所有训练示例,但如果 batch_size 是训练样本数量的一个因素,那么它只能精确运行一次。下面是我编写的一段代码,它确定了每个时期精确地检查一次样本的batch_size和steps_per_epoch。在代码中,长度等于样本数,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)
Run Code Online (Sandbox Code Playgroud)
对于训练来说,如果您对数据进行洗牌,那么仅通过训练集一次并不那么重要。但是对于验证和测试来说,通过验证集一次或测试集一次对于获得精确的真实结果非常重要。
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |