循环神经网络与长短期记忆网络:原理、应用与隐私保护
1. RNN反向传播示例
在循环神经网络(RNN)中,梯度消失和梯度爆炸是常见的问题。为了直观地观察这些问题,我们可以通过一个简单的示例来进行分析。以下代码展示了使用sigmoid和ReLU激活函数的RNN反向传播循环:
import numpy as np
(sigmoid, relu) = (lambda x: 1 / (1 + np.exp(-x)), lambda x: (x > 0).astype(float) * x)
weights = np.array([[1, 4], [4, 1]])
activation = sigmoid(np.array([1, 0.01]))
print("Sigmoid Activations")
activations = list()
for iter in range(10):
activation = sigmoid(activation.dot(weights))
activations.append(activation)
print(activation)
print("\nSigmoid Gradients")
gradient = np.ones_like(activation)
for activation in reversed(activations):
gradient = (activation * (1 - activation) * gradient)
gradient = gradient.dot(weights.transpose())
print
超级会员免费看
订阅专栏 解锁全文
872

被折叠的 条评论
为什么被折叠?



