Python 实现 BP 神经网络 Dropout 函数示例
以下是使用 Python 实现 BP 神经网络测试 dropout 函数的示例代码:
import numpy as np
class Dropout:
def __init__(self, p):
self.p = p
self.mask = None
def forward(self, X, training=True):
if training:
self.mask = np.random.binomial(1, self.p, size=X.shape) / self.p
return X * self.mask
else:
return X
def backward(self, dX):
return dX * self.mask
在这个示例代码中,我们定义了一个名为 Dropout 的类,它具有以下方法:
__init__: 初始化函数,接受一个参数 p 表示保留神经元的概率。forward: 前向传播函数,接受一个输入 X 和一个布尔值 training,用于确定是否在训练模式下使用 dropout。如果是训练模式,将生成一个掩码(mask)矩阵,其中每个元素都是 0 或 1,表示对应的神经元是否被保留。然后将输入 X 乘以掩码矩阵,得到输出。backward: 反向传播函数,接受一个输入 dX 表示上一层的梯度。将 dX 乘以掩码矩阵,得到输出梯度。
使用示例:
dropout = Dropout(0.5)
X = np.random.randn(10, 5)
y = dropout.forward(X, training=True)
dX = dropout.backward(np.ones_like(y))
在这个示例中,我们创建了一个 dropout 对象,并将保留概率设置为 0.5。然后生成一个 10x5 的随机输入矩阵 X,并使用 dropout 对象进行前向传播和反向传播。在训练模式下,dropout 函数将随机保留一半的神经元,并将其他神经元的输出设置为 0。在反向传播时,dropout 函数将上一层的梯度乘以掩码矩阵,将保留的神经元的梯度传递给下一层。
原文地址: https://www.cveoy.top/t/topic/nu2W 著作权归作者所有。请勿转载和采集!