• 动手学深度学习 | 分布式训练 | 34


    分布式训练

    其实分布式和单机多卡在逻辑上没有什么区别,只不过读数据之前从磁盘读取,现在换成了从网络读取;交换梯度之前通过内存处理,现在通过网络交换梯度。

    下面是一个具体样例,看看分布式如何减少跨机器的通讯。

    现在本机将梯度加起来,在进行发送。

    这个就是epoch和batch_size有一个权衡....

    QA

    1. 为什么batch_size变大,训练的有效性是下降的?

    沐神说直观上解释一下,一个极端情况,就是所有数据集的样本都是一个样本,就一张图片,然后复制一万份,那么不管batch_size取多大,所有的梯度都是一样的。

    也就是说,如果这个数据集不够大,数据多样性不够多,那么其实batch_size再大也是浪费计算。

    如果batch_size=128和batch_size=512训练出来的精度是差不多的,那么当然batch_size越小越好了,因为可以更加参数更新的次数,减少计算量,加速收敛。

    一个直观的做法,如果有n个类,那么batch_size最好不要超过10n。比如fashion-mnist有10个类,那么batch_size=128是不错的,ImageNet有1000类,那么batch_size取1w,甚至取10w(因为图片类别很多)都是可以的。

  • 相关阅读:
    Jquery 判断值是否存在于数组之内
    Linux 拷贝有更改的文件
    Thinkphp [美味]常用代码
    Oracle基础知识:DECODE、NVL
    安装配置svn
    搭建LAMP环境以及shell脚本搭建(yum安装)
    Jmeter接口测试webservice
    Jmeter插件安装和使用
    Jmeter中java接口测试
    Jmeter中聚合报告吞吐量的计算
  • 原文地址:https://www.cnblogs.com/Rowry/p/15365744.html
Copyright © 2020-2023  润新知