关于神经网络epoch和batch的理解
理解粗浅,仅为个人想法,提前感谢指正。
epoch
一个epoch代表全部数据进入网络一次,这个时候,整个网络结构只对这批数据全部走完一次,损失函数的下降还不够,因此需要多次epoch。需要多少个epoch才能使得网络训练到较为合理的地步,暂时没有定论,具体问题具体分析。
batch
batch指的是将一个epoch(所有数据)分割成几份,每份的大小为batch size。问题来了,为什么要把数据切割成一个batch一个batch进去训练呢?关于这个问题,基础不扎实的小白也想了好久。查阅了不少博客,有人提到,第一个原因,有时候一整份数据量过多,无法一次性全部喂进去,即内存不够。这又是为什么呢?把全部数据喂进去的时候网络是如何更新参数的呢?如果不分batch,一次性全部投入网络,那么网络是如何更新(即为什么占用内存过大)参数的呢?
举例
举个例子,有一份数据,包含100个样本,每个样本有10个特征值,那么这份数据就为(100,10)。再来看网络,假设是一个回归的预测问题,用最简单的全连接层,第一层为(input_size,hidden_size),hidden_size的大小自定义,这边假设为15,即网络的第一层为(10,15)。依此假设,第二层(15,10