numpy_neural_network
numpy_neural_network copied to clipboard
激活函数Tanh的反向传播
您好,最近阅读了您的这个仓库,受益非浅,非常感谢。 但是我对您在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))) 谢谢您的指教。
还有在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])
您好,最近阅读了您的这个仓库,受益非浅,非常感谢。 但是我对您在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 感谢您的反馈,已修正
还有在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 确实是写错了,感谢您的反馈!