zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 分布式训练 | 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(因为图片类别很多)都是可以的。

  • 相关阅读:
    linux下activemq安装
    java 线程方法join
    创建线程池
    游标储存过程
    返回结果集的储存过程
    linux 安装 reids 出错解决问题
    IDEAL 集成 jFINAL 问题
    oracle 游标
    oracle procedures
    Linux下安装Tomcat服务器
  • 原文地址:https://www.cnblogs.com/Rowry/p/15365744.html
Copyright © 2011-2022 走看看