一级门户网站建设费用,软文代写平台有哪些,深圳企业管理培训查询,偷dede网站模板简单比较
前向传播#xff08;Forward Propagation#xff09;#xff1a;
前向传播是神经网络中的正向计算过程#xff0c;用于从输入数据开始#xff0c;逐层计算每个神经元的输出值#xff0c;直到得到最终的预测值。在前向传播过程中#xff0c;我们按以下步骤进行…简单比较
前向传播Forward Propagation
前向传播是神经网络中的正向计算过程用于从输入数据开始逐层计算每个神经元的输出值直到得到最终的预测值。在前向传播过程中我们按以下步骤进行
输入数据将输入数据传递给输入层。
加权求和对每个神经元的输入进行加权求和即将输入与权重相乘并加上偏差。
激活函数将加权求和的结果输入激活函数如Sigmoid、ReLU等得到神经元的输出。
传递至下一层将当前层的输出作为下一层的输入重复步骤 2 和 3直到达到输出层得到最终的预测值。
反向传播Backward Propagation
反向传播是神经网络中的梯度计算和权重更新过程用于根据损失函数计算每个参数的梯度然后根据梯度信息更新网络的权重和偏差。在反向传播过程中我们按以下步骤进行
计算损失使用损失函数计算预测值与真实标签之间的差距。
计算梯度通过链式法则从输出层开始逐层计算每个参数的梯度传递梯度至前一层。对于每一层计算权重和偏差的梯度以及当前层输入的梯度。
参数更新使用计算得到的梯度信息根据优化算法如梯度下降法、Adam等更新每个参数的值以减小损失函数。
重复迭代重复进行前向传播和反向传播多次迭代直到损失函数足够小或达到预定的迭代次数。
前向传播和反向传播是神经网络训练的基石通过不断地在这两个过程中更新参数神经网络逐渐优化其性能从而能够更好地进行预测和模式识别任务。
代码实现
import numpy as np# Sigmoid 激活函数及其导数
def sigmoid(x):return 1 / (1 np.exp(-x))def sigmoid_derivative(x):return x * (1 - x)# 初始化参数
def initialize_parameters(input_size, hidden_size, output_size):parameters {W1: np.random.randn(hidden_size, input_size),b1: np.zeros((hidden_size, 1)),W2: np.random.randn(output_size, hidden_size),b2: np.zeros((output_size, 1))}return parameters# 前向传播
def forward_propagation(X, parameters):W1, b1, W2, b2 parameters[W1], parameters[b1], parameters[W2], parameters[b2]Z1 np.dot(W1, X) b1A1 sigmoid(Z1)Z2 np.dot(W2, A1) b2A2 sigmoid(Z2)cache {Z1: Z1, A1: A1, Z2: Z2, A2: A2}return A2, cache# 计算损失
def compute_loss(A2, Y):m Y.shape[1]loss -np.sum(Y * np.log(A2) (1 - Y) * np.log(1 - A2)) / mreturn loss# 反向传播
def backward_propagation(X, Y, cache, parameters):m X.shape[1]A1, A2 cache[A1], cache[A2]W2 parameters[W2]dZ2 A2 - YdW2 np.dot(dZ2, A1.T) / mdb2 np.sum(dZ2, axis1, keepdimsTrue) / mdZ1 np.dot(W2.T, dZ2) * sigmoid_derivative(A1)dW1 np.dot(dZ1, X.T) / mdb1 np.sum(dZ1, axis1, keepdimsTrue) / mgrads {dW1: dW1, db1: db1, dW2: dW2, db2: db2}return grads# 更新参数
def update_parameters(parameters, grads, learning_rate):parameters[W1] - learning_rate * grads[dW1]parameters[b1] - learning_rate * grads[db1]parameters[W2] - learning_rate * grads[dW2]parameters[b2] - learning_rate * grads[db2]return parameters# 主函数
def deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations):np.random.seed(42)input_size X.shape[0]output_size Y.shape[0]parameters initialize_parameters(input_size, hidden_size, output_size)for i in range(num_iterations):A2, cache forward_propagation(X, parameters)loss compute_loss(A2, Y)grads backward_propagation(X, Y, cache, parameters)parameters update_parameters(parameters, grads, learning_rate)if i % 100 0:print(fIteration {i}, Loss: {loss:.4f})return parameters# 示例数据
X np.array([[0, 0, 1, 1], [0, 1, 0, 1]])
Y np.array([[0, 1, 1, 0]])# 定义超参数
hidden_size 4
learning_rate 0.1
num_iterations 10000# 训练深层神经网络
parameters deep_neural_network(X, Y, hidden_size, learning_rate, num_iterations)# 预测
predictions, _ forward_propagation(X, parameters)
print(Predictions:, predictions)