bp神经网络模型 完整代码
时间: 2023-08-08 09:04:36 浏览: 76
很高兴回答你关于BP神经网络模型的问题。以下是一个简单的BP神经网络的完整代码示例:
```python
import numpy as np
# 定义BP神经网络类
class NeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
# 初始化权重
self.W1 = np.random.randn(input_size, hidden_size)
self.W2 = np.random.randn(hidden_size, output_size)
def sigmoid(self, x):
# Sigmoid 激活函数
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(self, x):
# Sigmoid 激活函数的导数
return x * (1 - x)
def forward(self, X):
# 前向传播
self.z = np.dot(X, self.W1)
self.hidden_layer = self.sigmoid(self.z)
self.output_layer = self.sigmoid(np.dot(self.hidden_layer, self.W2))
def backward(self, X, y, learning_rate):
# 反向传播
output_error = y - self.output_layer
output_delta = output_error * self.sigmoid_derivative(self.output_layer)
hidden_error = np.dot(output_delta, self.W2.T)
hidden_delta = hidden_error * self.sigmoid_derivative(self.hidden_layer)
self.W2 += learning_rate * np.dot(self.hidden_layer.T, output_delta)
self.W1 += learning_rate * np.dot(X.T, hidden_delta)
# 创建训练数据集
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])
# 定义神经网络参数
input_size = X.shape[1]
hidden_size = 4
output_size = 1
# 创建BP神经网络实例
nn = NeuralNetwork(input_size, hidden_size, output_size)
# 定义训练参数
epochs = 10000
learning_rate = 0.1
# 训练神经网络
for i in range(epochs):
nn.forward(X)
nn.backward(X, y, learning_rate)
# 预测新的样本
new_data = np.array([[1, 1]])
nn.forward(new_data)
print("预测结果:", nn.output_layer)
```
这个代码示例实现了一个简单的BP神经网络模型,包含输入层、隐藏层和输出层。它使用随机初始化的权重,通过前向传播和反向传播来训练网络,并使用Sigmoid函数作为激活函数。最后,使用训练好的模型进行预测。
请注意,这只是一个简单的示例代码,实际应用中可能需要更复杂的网络结构和优化方法。希望对你有所帮助!如果你有更多问题,请随时提问。
阅读全文