numpy_neural_network icon indicating copy to clipboard operation
numpy_neural_network copied to clipboard

激活函数Tanh的反向传播

Open qianchne opened this issue 5 years ago • 3 comments

您好,最近阅读了您的这个仓库,受益非浅,非常感谢。 但是我对您在nn/activations.py 中的Tanh的反向传播函数有点疑惑。 def tanh_backward(next_dz): """ tanh激活反向过程 :param next_dz: :return: """ return 1 - np.square(np.tanh(next_dz)) 根据反向传播的求导,我觉得Tanh的反向函数应该是: def tanh_backward(next_dz, z): return next_dz*(1 - np.square(np.tanh(z))) 谢谢您的指教。

qianchne avatar Nov 26 '20 03:11 qianchne

还有在nn/optimizers.py中我有些疑问: AdaGrad和RMSProp的权重更新中, (adagrad)self.s[key] += np.square(layer.weights[key]) (rmsprop)self.s[key] = self.gamma * self.s[key] + (1 - self.gamma) * np.square(layer.weights[key]) 我觉得根据定义,应该是: (adagrad)self.s[key] += np.square(layer.gradients[key]) (rmsprop)self.s[key] = self.gamma * self.s[key] + (1 - self.gamma) * np.square(layer.gradients[key])

qianchne avatar Nov 26 '20 08:11 qianchne

您好,最近阅读了您的这个仓库,受益非浅,非常感谢。 但是我对您在nn/activations.py 中的Tanh的反向传播函数有点疑惑。 def tanh_backward(next_dz): """ tanh激活反向过程 :param next_dz: :return: """ return 1 - np.square(np.tanh(next_dz)) 根据反向传播的求导,我觉得Tanh的反向函数应该是: def tanh_backward(next_dz, z): return next_dz*(1 - np.square(np.tanh(z))) 谢谢您的指教。

@qianchne 感谢您的反馈,已修正

yizt avatar Nov 28 '20 07:11 yizt

还有在nn/optimizers.py中我有些疑问: AdaGrad和RMSProp的权重更新中, (adagrad)self.s[key] += np.square(layer.weights[key]) (rmsprop)self.s[key] = self.gamma * self.s[key] + (1 - self.gamma) * np.square(layer.weights[key]) 我觉得根据定义,应该是: (adagrad)self.s[key] += np.square(layer.gradients[key]) (rmsprop)self.s[key] = self.gamma * self.s[key] + (1 - self.gamma) * np.square(layer.gradients[key])

@qianchne 确实是写错了,感谢您的反馈!

yizt avatar Nov 28 '20 07:11 yizt