美文网首页
Lecture8-1

Lecture8-1

作者: 带带吴腾跃 | 来源:发表于2019-11-14 17:21 被阅读0次

    Keras中的batch_size

    首先这里有个秘密,我们在做gradient descent的时候并不会真正去minimize total loss。我们会把training data会随机分成一个一个的batch。然后计算对第一个batch里面的total loss,然后update参数,也就是计算参数对L'的微分。然后再计算第二个batch的total loss,计算参数对L''的微分,然后更新一次参数,接下来对下一个batch,然后反复进行这个过程,直到把所有的batch都update完。这个过程叫做一个epoch,然后再重复epoch

    image.png

    如果我们把batch_size设为1的话,就是Stochastic gradient descent

    image.png

    Stochastic gradient descent对比普通gradient descent有更快的速度,为什么我们还需要batch而不直接用Stochastic gradient descent 呢?

    如果现在有50000个example,要用Stochastic gradient descent的话,在一个epoch里你就要更新50000次参数,如果batch_size设为10,在一个epoch里面你就要更新5000次参数,显然Stochastic gradient descent更新参数的速度更快。理论上,对于50000个example,每一个epoch的运算总量是相同的,但是当你batch_size大小不同的时候,就算是同样多的example,一个epoch需要的时间是不一样的。


    image.png

    为什么batch_size设定大的时候每个epoch速度更快?因为用了GPU,并行计算10个epoch和1个计算时间是差不多的。但是太大的batch_size也会影响性能,GPU也是有限制的。train的时候network会容易卡住,无法再train。


    image.png
    对GPU来说,每一个矩阵运算都是可以并行运算的,所以把矩阵拼起来,速度更一个矩阵是相同的。

    相关文章

      网友评论

          本文标题:Lecture8-1

          本文链接:https://www.haomeiwen.com/subject/dfkqictx.html