下面是一个包含两个输入神经元和三个输出神经元的 BP 神经网络的 Python 代码:

import numpy as np

class NeuralNetwork:
    def __init__(self):
        # 初始化权重
        self.weights1 = np.random.rand(2, 3)  # 输入层到隐藏层的权重矩阵
        self.weights2 = np.random.rand(3, 3)  # 隐藏层到输出层的权重矩阵

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

    def sigmoid_derivative(self, x):
        # sigmoid激活函数的导数
        return x * (1 - x)

    def feedforward(self, inputs):
        # 前向传播
        self.hidden_layer = self.sigmoid(np.dot(inputs, self.weights1))
        self.output_layer = self.sigmoid(np.dot(self.hidden_layer, self.weights2))
        return self.output_layer

    def backpropagation(self, inputs, targets, learning_rate):
        # 反向传播
        output_error = targets - self.output_layer
        output_delta = output_error * self.sigmoid_derivative(self.output_layer)

        hidden_error = output_delta.dot(self.weights2.T)
        hidden_delta = hidden_error * self.sigmoid_derivative(self.hidden_layer)

        self.weights2 += self.hidden_layer.T.dot(output_delta) * learning_rate
        self.weights1 += inputs.T.dot(hidden_delta) * learning_rate

    def train(self, inputs, targets, learning_rate, epochs):
        for epoch in range(epochs):
            self.feedforward(inputs)
            self.backpropagation(inputs, targets, learning_rate)

    def predict(self, inputs):
        return self.feedforward(inputs)

# 创建神经网络对象
nn = NeuralNetwork()

# 输入数据
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# 目标输出
targets = np.array([[0, 0, 0], [1, 0, 1], [1, 0, 1], [1, 1, 0]])

# 训练神经网络
nn.train(inputs, targets, learning_rate=0.1, epochs=10000)

# 预测新数据
new_inputs = np.array([[0, 0]])
print(nn.predict(new_inputs))

这个神经网络包含一个隐藏层,隐藏层有三个神经元。'weights1'是输入层到隐藏层的权重矩阵,'weights2'是隐藏层到输出层的权重矩阵。'sigmoid'函数是激活函数,'sigmoid_derivative'函数是sigmoid函数的导数。

'feedforward'函数执行前向传播,根据输入和权重计算隐藏层和输出层的输出。'backpropagation'函数执行反向传播,根据输出误差和其导数调整权重。'train'函数用于训练神经网络,通过多次迭代前向传播和反向传播来更新权重。'predict'函数用于预测新的输入数据。

在示例中,输入数据是逻辑门的输入(AND、OR等),目标输出是逻辑门的输出。训练神经网络后,可以使用'predict'函数预测新的输入数据的输出。

Python 实现带解释的 2 输入 3 输出 BP 神经网络

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

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