开发者社区> 问答> 正文

在循环训练中缺少一个批次?

数据有n_rows行
批量大小是 batch_size
我看到一些代码使用:

n_batches = int(n_rows / batch_size)
如果n_rows不是批量大小的倍数怎么办?是n_batches仍然是正确的?

展开
收起
一码平川MACHEL 2019-01-22 15:58:40 1452 0
1 条回答
写回答
取消 提交回答
  • 乍一看它看起来像一个bug,似乎我们正在丢失一些训练样例,但我们必须仔细查看代码。

    当你看到这一点时,就像你发送的代码一样,在每个时代(基于一个时代看到的n_batches = int(n_rows / batch_size)例子),数据在每个时代之后被洗牌。因此,通过时间(在几个时期之后),您将看到所有训练样例。我们没有丢失任何例子 o /

    小结论:如果你看到这一点,确保数据在每个时代都被洗牌,否则你的网络可能永远不会看到一些训练样例。

    这样做有什么好处?
    效率很高:通过使用此机制,您可以确保在每个培训步骤中,您的网络都会看到batch_size示例,并且您不会使用少量培训示例执行训练循环。

    在培训期间,还有一些改善数据的优点: statexchange post

    我也将添加到post,如果您使用的机制,如批标准化,最好在训练过程中具有恒定的批量大小

    2019-07-17 23:26:18
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
4个迭代,从批量交...1573957773.pdf 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载