关于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回答

正十七

2019-07-06

“第一个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也要变化。

1
1
慕仙5479579
明白了,非常感谢老师的耐心回复!
2019-07-17
共1条回复

深度学习之神经网络(CNN/RNN/GAN)算法原理+实战

深度学习算法工程师必学,深入理解深度学习核心算法CNN RNN GAN

2617 学习 · 935 问题

查看课程