神经网络基础-神经网络补充概念-27-深层网络中的前向传播

概念

深层神经网络中的前向传播是指从输入数据开始,逐层计算每个神经元的输出值,直到得到最终的预测值。

一般步骤

1输入数据传递:

将输入数据传递给网络的输入层。输入数据通常是一个特征矩阵,每一列代表一个样本,每一行代表一个特征。

2加权求和和激活函数:

对于每个隐藏层,进行以下步骤:

3计算加权输入,即将输入数据与权重矩阵相乘并加上偏置向量。

将加权输入传递给激活函数,得到该隐藏层的激活值(输出)。常用的激活函数包括Sigmoid、ReLU、Tanh等。

4传递至下一层:

将当前隐藏层的输出作为下一隐藏层的输入,重复步骤 2,直到到达输出层。输出层的输出即为网络的预测值。

5返回预测值和缓存:

返回预测值(输出层的输出)以及在计算过程中保存的缓存(各层的加权输入和激活值),这些缓存在反向传播中会用到。

代码实现

python 复制代码
import numpy as np

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

# 初始化参数
def initialize_parameters(layer_dims):
    parameters = {}
    L = len(layer_dims)  # 网络层数

    for l in range(1, L):
        parameters['W' + str(l)] = np.random.randn(layer_dims[l], layer_dims[l - 1]) * 0.01
        parameters['b' + str(l)] = np.zeros((layer_dims[l], 1))

    return parameters

# 前向传播
def forward_propagation(X, parameters):
    caches = []
    A = X
    L = len(parameters) // 2  # 网络层数

    for l in range(1, L):
        Z = np.dot(parameters['W' + str(l)], A) + parameters['b' + str(l)]
        A = sigmoid(Z)
        caches.append((Z, A))

    Z = np.dot(parameters['W' + str(L)], A) + parameters['b' + str(L)]
    AL = sigmoid(Z)
    caches.append((Z, AL))

    return AL, caches

# 示例数据
X = np.random.randn(3, 10)  # 3个特征,10个样本
layer_dims = [3, 4, 5, 1]  # 输入层维度、各隐藏层维度、输出层维度
parameters = initialize_parameters(layer_dims)

# 前向传播
AL, caches = forward_propagation(X, parameters)

# 打印预测值
print("预测值:", AL)
相关推荐
NAGNIP5 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab7 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab7 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP10 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年10 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼11 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS11 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区12 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈12 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang13 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx