Maxout激活功能-在NumPy中实现正向和反向传播

时间:2019-04-22 07:35:33

标签: python numpy neural-network activation-function

我正在使用NumPy从头开始构建一个香草神经网络,并针对不同的激活函数试用模型性能。我特别希望看到“ Maxout”激活功能如何影响我的模型性能。

进行了一些搜索之后,除了定义(https://ibb.co/kXCpjKc之外,我无法在NumPy中找到实现。正向传播的公式很清楚,我将在哪里使用max(Z)(其中Z = w.T * x + b)。但是,我不清楚在反向传播中将使用它们的派生词。

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

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

稍微更改任何一个非最大值不会影响输出,因此它们的梯度为零。梯度从下一层传递到仅达到最大值的神经元(在您提供的链接中,梯度= 1)。请参阅以下stackoverflow答案:https://datascience.stackexchange.com/a/11703

在神经网络设置中,您需要相对于每个x_i的梯度,因此您需要全导数。在您提供的链接中,您可以看到仅定义了一个偏导数。偏导数是一个矢量(几乎所有零和1,其中神经元最大),因此整个梯度将成为矩阵。

您可以使用numpynp.argmax中实现。