关于CifarData中的类方法next_batch的问题
来源:2-7 神经元实现(二分类逻辑斯蒂回归模型实现)
慕仙5479579
2019-07-01
老师您好,关于2-7节中关于CifarData这个类中的类方法,next_batch,我有一些疑问需要您的解答:
第一个if判断if end_indicator > self._num_examples判断的是什么情况,是用mini batch走完了第一遍数据集,导致end_indicator比self._num_examples大,所以需要重新遍历吗?以及,为什么后面接着判断是不是需要_need_shuffle呢?直接shuffle不行吗?这一步shuffle完以后,把__indicator = 0,但是为什么end_indicator = batch_size?一开始不是已经有end_indicator = self._indicator + batch_size了吗?
非常期待老师能够回答小白的提问!
1回答
-
“第一个if判断if end_indicator > self._num_examples判断的是什么情况,是用mini batch走完了第一遍数据集,导致end_indicator比self._num_examples大,所以需要重新遍历吗?” 是的,数据用完了,需要重新遍历
“以及,为什么后面接着判断是不是需要_need_shuffle呢?直接shuffle不行吗?”训练集需要shuffle,测试集和验证集没必要shuffle,所以不能直接shuffle
“这一步shuffle完以后,把__indicator = 0,但是为什么end_indicator = batch_size?一开始不是已经有end_indicator = self._indicator + batch_size了吗?”
我们要取batch_size个,所以start_indicator和end_indicator要保证差是batch_size. 虽然刚开始设置了,但是indicator变了,因而end_indicator也要变化。
112019-07-17
相似问题