以下是一个具有两个输入神经元和三个输出神经元的 BP 神经网络的 Python 代码:

import numpy as np
import pandas as pd

# 读取训练数据
data = pd.read_excel('training_data.xlsx')
X = data[['input1', 'input2']].values
y = data[['output1', 'output2', 'output3']].values

# 定义激活函数(sigmoid函数)
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 定义激活函数的导数
def sigmoid_derivative(x):
    return x * (1 - x)

# 初始化权重和偏置
np.random.seed(0)
weights1 = 2 * np.random.random((2, 4)) - 1
weights2 = 2 * np.random.random((4, 3)) - 1
bias1 = np.zeros((1, 4))
bias2 = np.zeros((1, 3))

# 定义训练迭代次数和学习率
epochs = 10000
learning_rate = 0.1

# 训练模型
for i in range(epochs):
    # 前向传播
    layer1_output = sigmoid(np.dot(X, weights1) + bias1)
    layer2_output = sigmoid(np.dot(layer1_output, weights2) + bias2)

    # 计算误差
    layer2_error = y - layer2_output
    if i % 1000 == 0:
        print('Error after', i, 'epochs:', np.mean(np.abs(layer2_error)))

    # 反向传播
    layer2_delta = layer2_error * sigmoid_derivative(layer2_output)
    layer1_error = layer2_delta.dot(weights2.T)
    layer1_delta = layer1_error * sigmoid_derivative(layer1_output)

    # 更新权重和偏置
    weights2 += layer1_output.T.dot(layer2_delta) * learning_rate
    bias2 += np.sum(layer2_delta, axis=0, keepdims=True) * learning_rate
    weights1 += X.T.dot(layer1_delta) * learning_rate
    bias1 += np.sum(layer1_delta, axis=0, keepdims=True) * learning_rate

# 测试模型
test_data = pd.read_excel('test_data.xlsx')
X_test = test_data[['input1', 'input2']].values
y_true = test_data[['output1', 'output2', 'output3']].values

layer1_output_test = sigmoid(np.dot(X_test, weights1) + bias1)
layer2_output_test = sigmoid(np.dot(layer1_output_test, weights2) + bias2)

print('Predicted Output:', layer2_output_test)
print('True Output:', y_true)

在代码中,我们首先使用pandas库读取训练数据和测试数据的 Excel 文件。训练数据包含两个输入神经元的输入值和三个输出神经元的目标值。测试数据仅包含两个输入神经元的输入值。

然后,我们定义了sigmoid函数和sigmoid_derivative函数作为激活函数和激活函数的导数。

接下来,我们初始化权重和偏置。权重是随机初始化的,并且位于-1到1之间。

然后,我们使用一个循环来进行训练。在每次迭代中,我们进行前向传播,计算每一层的输出,并计算误差。然后,我们使用反向传播来更新权重和偏置,以减小误差。

最后,我们使用训练好的模型对测试数据进行预测,并将预测输出与真实输出进行比较。

请确保将训练数据和测试数据保存为名为training_data.xlsxtest_data.xlsx的 Excel 文件,并按照代码中的数据格式进行排列。

Python 实现双输入三输出 BP 神经网络:代码解析与示例

原文地址: https://www.cveoy.top/t/topic/qqAM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录