环境

  • python 3.9
  • numpy 1.24.1
  • pytorch 2.0.0+cu117

Pruning 系列 (五)Dropout、Dropconnect剪枝-LMLPHP

一、Dropout

dropout在全连接层使用。

假设丢弃概率是P,有两种实现方式,不管是在《测试阶段》还是《训练阶段》对每层的输出做缩放,都是为了保持伯努利分布的期望np。《测试阶段》没dropout 而是全量神经元参与运算,不然预测结果具有随机性。为了保持每层输出和训练时一样的期望,所以需要缩放。

形象化理解:

10个人拉一个10吨的车:10*1=10

第一次(训练时):当只有8个人出力(有p=0.2的人被dropout),为保持10吨的车照常运行。

从:10*1* [(1-p)/(1-p)] = 10       即:10*(1-p) *  [1/(1-p)] =10

可得每人需要 8人需要多发力1.25。

第二次(预测时):10个人需要同时出力(没dropout),为保持结果不变需乘 (1-p)

即:这次每个人出力 1.25 * (1-0.2) =  1

dropout为什么可以缓解

05-16 12:40