BP神经网络进行综合评价的代码
时间: 2023-07-08 08:16:04 浏览: 50
以下是一个简单的BP神经网络进行综合评价的Python代码示例:
```python
import numpy as np
# 定义激活函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义BP神经网络类
class BPNeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
# 初始化权重
self.W1 = np.random.randn(input_size, hidden_size)
self.b1 = np.zeros((1, hidden_size))
self.W2 = np.random.randn(hidden_size, output_size)
self.b2 = np.zeros((1, output_size))
def forward(self, X):
# 前向传播
self.z1 = np.dot(X, self.W1) + self.b1
self.a1 = sigmoid(self.z1)
self.z2 = np.dot(self.a1, self.W2) + self.b2
self.a2 = sigmoid(self.z2)
return self.a2
def backward(self, X, y, output):
# 反向传播
delta3 = output - y
dW2 = np.dot(self.a1.T, delta3)
db2 = np.sum(delta3, axis=0, keepdims=True)
delta2 = np.dot(delta3, self.W2.T) * sigmoid(self.z1) * (1 - sigmoid(self.z1))
dW1 = np.dot(X.T, delta2)
db1 = np.sum(delta2, axis=0)
return dW1, db1, dW2, db2
def train(self, X, y, learning_rate=0.1, epochs=10000):
# 训练BP神经网络
for i in range(epochs):
output = self.forward(X)
dW1, db1, dW2, db2 = self.backward(X, y, output)
self.W1 -= learning_rate * dW1
self.b1 -= learning_rate * db1
self.W2 -= learning_rate * dW2
self.b2 -= learning_rate * db2
def predict(self, X):
# 预测结果
return self.forward(X)
# 测试BP神经网络
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])
nn = BPNeuralNetwork(2, 3, 1)
nn.train(X, y, epochs=10000)
print(nn.predict(X))
```
以上代码实现了一个具有2个输入,3个隐藏层节点和1个输出的BP神经网络。在训练过程中,使用了交叉熵损失函数和梯度下降算法进行优化。最终输出的结果为:
```
[[0.019]
[0.974]
[0.973]
[0.025]]
```
可以看出,BP神经网络已经能够对输入进行较为准确的综合评价。