dropout层详细的计算过程
时间: 2023-09-16 13:07:40 浏览: 125
浅谈keras中Dropout在预测过程中是否仍要起作用
在深度神经网络中,为了避免过拟合,经常会使用dropout技术。dropout就是在神经网络中随机选择一些神经元并将其输出设置为0,这些神经元在该次训练中不参加前向传播和反向传播。
下面是dropout层的详细计算过程:
假设有一个输入向量 x,dropout率为 p,那么:
1. 对于每个神经元 i,以概率 p 将其输出 z_i 设置为 0,否则将输出 z_i 乘以一个缩放因子 1/(1-p)。
2. 在测试时,不进行dropout,而是将所有输出 z_i 乘以缩放因子 1-p,以保持与训练时相同的期望值。
具体地,假设输入向量 x 的维度为 n,dropout率为 p。那么我们可以先生成一个大小为 n 的二元向量 mask,其中每个元素以概率 p 取值为 0,否则取值为 1。然后我们将 mask 与输入向量 x 按元素相乘,得到新的向量 y。最后将 y 除以 1-p,即可得到 dropout 层的输出。
在反向传播时,dropout层的梯度计算过程也是相对简单的,我们只需要将上一层传下来的梯度与 mask 按元素相乘即可。由于 mask 中的元素只有 0 和 1,因此我们实际上相当于将一部分梯度置为了 0,从而达到了随机失活的目的。
阅读全文