如果你不清楚epoch,iteration和batch_size,一定要看这篇

很多人对这些有自己的理解,这就导致了百花齐放,成功把人绕晕。
比如说
1.batch_size
因为更新参数是按批次更新的,batch_size就是一个批次batch内的数量。
2.iteration
完成一次batch的训练
3.epoch
使用训练集中的全部数据进行一次完整的训练

??????????????????

对照真正的代码,会很崩溃
比如说epoch要不要设置,设置多少为好
iteration也是一样,那到底要怎么才能看懂,这些的关系又是什么。

下面举个栗子:
1)定义训练集样本的总数是7000,batch_size=128,epoch=10

上面的话可以这样理解,训练集需要的batch数量为
7000/128=55,也就是把整个数据分为55份,每份128个。

那这个份数有啥用。因为神经网络每次处理的数据量是有限的,一次性跑7000个数据或许不太困难,但是一次性7W个,70W个估计电脑会瘫,计算量和开销实在太大,内存也吃不住,因此需要徐徐图之。

把一坨数据(7000)分成N份(55)就是一个有效的策略。

上面提到,一个epoch就要用全部数据进行训练,全部数据当然不是一次性的输入,而是分成55次,也就是每次epoch跑55个batch的数据量,不正好是7000个吗。就这样连续经历10次epoch。每个epoch里的iteration数量=batch=55。

2)或者这样,定义7000个数据,batch_size=128,iteration=550,问epoch次数

batch=7000/128=55没错吧
每个epoch跑55个batch量的数据没错吧
每个epoch需要经历55次iteration没错吧
那epoch数=550/55=10没毛病吧

总结iteration和epoch只要设置一项就可以计算出另外一个但是数据总量和batch_size一定要设置

最后,关于epoch和iteration具体设置的值
一般的,epoch的数量要>1,但是具体的设置还要看样本总量,并不是说epoch越大越好,只有通过具体的实验证明才能得到合适的数值(实验出真知)。

你可能感兴趣的:(Keras,故障诊断,技术,深度学习)