目录
一.介绍
BP神经网络,即反向传播(Backpropagation)神经网络,是一种多层前馈人工神经网络。它通过学习输入数据和期望输出之间的关系来训练网络的权重和偏置。BP神经网络的前向传播过程是信息从输入层经过每一层的加权和激活函数处理,最终到达输出层的过程。
二.前向传播步骤
1.输入层
将输入数据 𝑥 送入网络的输入层。
2.隐藏层
1)对于每一层的每个神经元,计算其输入值:
其中,是连接第 𝑗 个输入神经元和第 𝑖 个隐藏神经元的权重,是第 𝑗 个输入神经元的输出, 是第 𝑖 个隐藏神经元的偏置。
2)应用激活函数 𝜎 到输入值 上,得到激活值:
激活函数可以是Sigmoid、Tanh或ReLU等。
3.输出层
重复上述过程,直到达到输出层。输出层的激活值就是网络的预测输出。
4.输出
输出层的激活值 𝑦 就是神经网络的最终输出,用于预测或分类任务。
三、示例
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def forward_pass(x, weights1, biases1, weights2, biases2):
# 输入层
a1 = x
# 第一隐藏层
z1 = np.dot(a1, weights1) + biases1
a1 = sigmoid(z1)
# 输出层
z2 = np.dot(a1, weights2) + biases2
a2 = sigmoid(z2)
return a2
# 示例参数
n = 3 # 输入层神经元数
m = 4 # 第一隐藏层神经元数
k = 2 # 输出层神经元数
# 随机生成权重和偏置
weights1 = np.random.rand(n, m)
biases1 = np.random.rand(m)
weights2 = np.random.rand(m, k)
biases2 = np.random.rand(k)
# 输入数据
x = np.array([0.5, 0.2, -0.1])
# 前向传播
output = forward_pass(x, weights1, biases1, weights2, biases2)
print("输出层激活值:", output)