循环神经网络python代码
时间: 2023-11-09 09:00:50 浏览: 107
好的,以下是一个简单的循环神经网络的 Python 代码示例:
```python
import numpy as np
# 定义激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义循环神经网络类
class RNN:
def __init__(self, input_size, hidden_size, output_size):
# 初始化权重矩阵
self.Wxh = np.random.randn(hidden_size, input_size) * 0.01
self.Whh = np.random.randn(hidden_size, hidden_size) * 0.01
self.Why = np.random.randn(output_size, hidden_size) * 0.01
self.bh = np.zeros((hidden_size, 1))
self.by = np.zeros((output_size, 1))
def forward(self, inputs):
# 初始化隐藏状态和输出
h = np.zeros((self.Whh.shape[0], 1))
y = np.zeros((self.Why.shape[0], 1))
# 循环计算隐藏状态和输出
for t in range(len(inputs)):
x = inputs[t].reshape(-1, 1)
h = sigmoid(np.dot(self.Wxh, x) + np.dot(self.Whh, h) + self.bh)
y = np.dot(self.Why, h) + self.by
return y
# 测试代码
rnn = RNN(2, 3, 1)
inputs = [np.array([1, 0]), np.array([0, 1]), np.array([1, 1]), np.array([0, 0])]
outputs = [np.array([1]), np.array([1]), np.array([0]), np.array([0])]
for i in range(len(inputs)):
y = rnn.forward(inputs[i])
print("Input:", inputs[i], "Output:", y, "Expected Output:", outputs[i])
```
这个代码实现了一个简单的循环神经网络,用于对输入序列进行分类。其中,`sigmoid` 函数是激活函数,`RNN` 类定义了循环神经网络的结构和前向传播过程。
阅读全文