我想要使用BP神经网络的代码
时间: 2023-11-09 11:08:37 浏览: 24
好的,以下是一个简单的BP神经网络的Python代码示例:
```python
import numpy as np
# 定义sigmoid激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义BP神经网络类
class BPNeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
self.weights_ih = np.random.normal(0.0, pow(hidden_size, -0.5), (hidden_size, input_size))
self.weights_ho = np.random.normal(0.0, pow(output_size, -0.5), (output_size, hidden_size))
self.bias_h = np.zeros((hidden_size, 1))
self.bias_o = np.zeros((output_size, 1))
def train(self, inputs, targets, learning_rate):
# 前向传播
hidden_inputs = np.dot(self.weights_ih, inputs) + self.bias_h
hidden_outputs = sigmoid(hidden_inputs)
final_inputs = np.dot(self.weights_ho, hidden_outputs) + self.bias_o
final_outputs = sigmoid(final_inputs)
# 反向传播
output_errors = targets - final_outputs
hidden_errors = np.dot(self.weights_ho.T, output_errors)
self.weights_ho += learning_rate * np.dot(output_errors * final_outputs * (1 - final_outputs), hidden_outputs.T)
self.weights_ih += learning_rate * np.dot(hidden_errors * hidden_outputs * (1 - hidden_outputs), inputs.T)
self.bias_o += learning_rate * output_errors
self.bias_h += learning_rate * hidden_errors
def predict(self, inputs):
hidden_inputs = np.dot(self.weights_ih, inputs) + self.bias_h
hidden_outputs = sigmoid(hidden_inputs)
final_inputs = np.dot(self.weights_ho, hidden_outputs) + self.bias_o
final_outputs = sigmoid(final_inputs)
return final_outputs
```
这是一个仅含一个隐层的BP神经网络,可以根据实际需求进行修改。