Maxout 激活函数 - 在 NumPy 中实现前向和反向传播

我正在使用 NumPy 从头开始构建一个普通的神经网络,并试验不同激活函数的模型性能。我特别想看看“Maxout”激活函数将如何影响我的模型性能。

在进行了一些搜索之后,除了它们的定义( https://ibb.co/kXCpjKc)之外,我无法在 NumPy 中找到一个实现。前向传播的公式很清楚,我将在哪里取 max(Z)(其中 Z = wT * x + b)。但是,我将在反向传播中使用的它们的导数对我来说并不清楚。

j = argmax(z) 在这种情况下是什么意思?如何在 NumPy 中实现它?

任何帮助将非常感激!谢谢!


慕标5832272
浏览 223回答 1
1回答

明月笑刀无情

稍微改变任何非最大值不会影响输出,因此它们的梯度为零。梯度仅从下一层传递到达到最大值的神经元(您提供的链接中的梯度 = 1)。请参阅此 stackoverflow 答案:https ://datascience.stackexchange.com/a/11703 。在神经网络设置中,您需要关于每个 x_i 的梯度,因此您需要全导数。在您提供的链接中,您可以看到只定义了一个偏导数。偏导数是一个向量(几乎全是 0 和 1,其中神经元最大),所以全梯度会变成一个矩阵。您可以在numpyusing中实现这一点np.argmax。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python