bp神经网络预测代码
时间: 2024-06-11 22:01:57 浏览: 98
BP神经网络是一种常用的人工神经网络模型,它在分类、回归、预测等方面有着广泛的应用。下面是一个简单的BP神经网络预测代码的示例:
```
import numpy as np
class BPNeuralNetwork():
def __init__(self, input_size, hidden_size, output_size):
self.input_size = input_size
self.hidden_size = hidden_size
self.output_size = output_size
# 随机初始化权重参数
self.W1 = np.random.randn(self.input_size, self.hidden_size)
self.b1 = np.zeros((1, self.hidden_size))
self.W2 = np.random.randn(self.hidden_size, self.output_size)
self.b2 = np.zeros((1, self.output_size))
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def forward(self, X):
# 前向传播计算输出结果
self.z1 = np.dot(X, self.W1) + self.b1
self.a1 = self.sigmoid(self.z1)
self.z2 = np.dot(self.a1, self.W2) + self.b2
y_pred = self.sigmoid(self.z2)
return y_pred
def sigmoid_derivative(self, x):
return x * (1 - x)
def train(self, X, y, num_epochs=1000, learning_rate=0.1):
for i in range(num_epochs):
# 前向传播计算输出结果
y_pred = self.forward(X)
# 计算误差和梯度
error = y - y_pred
delta_output = error * self.sigmoid_derivative(y_pred)
delta_hidden = delta_output.dot(self.W2.T) * self.sigmoid_derivative(self.a1)
# 更新权重参数
self.W2 += self.a1.T.dot(delta_output) * learning_rate
self.b2 += np.sum(delta_output, axis=0, keepdims=True) * learning_rate
self.W1 += X.T.dot(delta_hidden) * learning_rate
self.b1 += np.sum(delta_hidden, axis=0) * learning_rate
print("训练完成!")
# 数据准备
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([, , , ])
# 创建BP神经网络模型
bp_nn = BPNeuralNetwork(input_size=2, hidden_size=4, output_size=1)
# 训练模型
bp_nn.train(X, y)
# 预测结果
y_pred = bp_nn.forward(X)
print(y_pred)
```
这个示例中,我们使用numpy库实现了一个简单的BP神经网络模型,其中包括了前向传播、反向传播和权重参数更新的过程。在训练完成后,我们可以使用forward方法对新数据进行预测。
阅读全文