bp神经网络python实例
时间: 2023-07-29 18:12:33 浏览: 67
下面是一个简单的 Python 实现 BP 神经网络的例子:
```python
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.hidden_weights = np.random.randn(self.hidden_size, self.input_size)
self.output_weights = np.random.randn(self.output_size, self.hidden_size)
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(self, x):
return x * (1 - x)
def feedforward(self, inputs):
hidden_inputs = np.dot(self.hidden_weights, inputs)
hidden_outputs = self.sigmoid(hidden_inputs)
output_inputs = np.dot(self.output_weights, hidden_outputs)
output_outputs = self.sigmoid(output_inputs)
return hidden_outputs, output_outputs
def train(self, inputs, targets, learning_rate, epochs):
for i in range(epochs):
hidden_outputs, output_outputs = self.feedforward(inputs)
output_errors = targets - output_outputs
output_delta = output_errors * self.sigmoid_derivative(output_outputs)
hidden_errors = np.dot(self.output_weights.T, output_delta)
hidden_delta = hidden_errors * self.sigmoid_derivative(hidden_outputs)
self.output_weights += learning_rate * np.outer(output_delta, hidden_outputs)
self.hidden_weights += learning_rate * np.outer(hidden_delta, inputs)
def predict(self, inputs):
_, output = self.feedforward(inputs)
return output
```
这个类实现了一个简单的 BP 神经网络,包括前向传播、反向传播和预测功能。在初始化时,我们需要指定输入层、隐藏层和输出层的大小。在训练时,我们需要提供训练数据和目标数据,以及学习率和迭代次数。在预测时,我们只需要提供输入数据即可得到输出结果。