我正在使用NumPy从头开始构建一个香草神经网络,并针对不同的激活函数试用模型性能。我特别希望看到“ Maxout”激活功能如何影响我的模型性能。
进行了一些搜索之后,除了定义(https://ibb.co/kXCpjKc之外,我无法在NumPy中找到实现。正向传播的公式很清楚,我将在哪里使用max(Z)(其中Z = w.T * x + b)。但是,我不清楚在反向传播中将使用它们的派生词。
在这种情况下,j = argmax(z)是什么意思?如何在NumPy中实现它?
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
稍微更改任何一个非最大值不会影响输出,因此它们的梯度为零。梯度从下一层传递到仅达到最大值的神经元(在您提供的链接中,梯度= 1)。请参阅以下stackoverflow答案:https://datascience.stackexchange.com/a/11703。
在神经网络设置中,您需要相对于每个x_i的梯度,因此您需要全导数。在您提供的链接中,您可以看到仅定义了一个偏导数。偏导数是一个矢量(几乎所有零和1,其中神经元最大),因此整个梯度将成为矩阵。
您可以使用numpy
在np.argmax
中实现。