24 多样本向量化(Vectorizing Across Multiple Examples)
1. 背景回顾:单个样本的前向传播 在上一节课中,我们学习了如何对单个训练样本 $x^{(i)}$ 进行前向传播,计算一个含一个隐藏层的神经网络的输出 $\hat{y}^{(i)} = a^{[2]!(i)}$。其计算步骤如下: [\begin{aligned} z^{[1]!(i)} &= W^{[1]} x^{(i)} + b^{[1]} a^{[1]!(i)} &am...
1. 背景回顾:单个样本的前向传播 在上一节课中,我们学习了如何对单个训练样本 $x^{(i)}$ 进行前向传播,计算一个含一个隐藏层的神经网络的输出 $\hat{y}^{(i)} = a^{[2]!(i)}$。其计算步骤如下: [\begin{aligned} z^{[1]!(i)} &= W^{[1]} x^{(i)} + b^{[1]} a^{[1]!(i)} &am...
1. 神经网络结构回顾 考虑一个 具有一个隐藏层 的神经网络: 输入层:3 个特征 → $\mathbf{x} = [x_1, x_2, x_3]^\top \in \mathbb{R}^3$ 隐藏层:4 个神经元(节点) 输出层:1 个神经元(用于二分类,输出 $\hat{y}$) 💡 注:这种网络...
一、神经网络结构概述 本节讲解的是一个具有单个隐藏层的前馈神经网络(Feedforward Neural Network)。其结构如下: 输入层(Input Layer) :包含 3 个输入特征 $x_1, x_2, x_3$。 隐藏层(Hidden Layer) :包含 4 个神经元(节点)。 输出层(Output Layer) :包含 1 个神经元,输出预测值 $\...
1. 回顾:逻辑回归(Logistic Regression) 在上一周的学习中,我们学习了逻辑回归模型,其计算流程如下: 输入特征向量:$\mathbf{x} \in \mathbb{R}^{n_x}$ 参数:权重 $\mathbf{w} \in \mathbb{R}^{n_x}$,偏置 $b \in \mathbb{R}$ 线性组合: \[z = \ma...
1. 逻辑回归的基本形式 在逻辑回归中,我们对输入特征向量 $\mathbf{x} \in \mathbb{R}^n$ 做如下预测: [\hat{y} = \sigma(\mathbf{w}^\top \mathbf{x} + b)] 其中: $\mathbf{w} \in \mathbb{R}^n$ 是权重向量; $b \in \mathbb{R}$ 是偏置项; ...
1. 问题背景:NumPy 的灵活性是一把双刃剑 优点:Python + NumPy 提供了强大的广播机制(broadcasting),使得代码简洁、表达力强。 缺点:过度灵活可能导致隐蔽的 bug,尤其在向量维度处理上容易出错。 例如:将列向量与行向量相加,本应报错,但 NumPy 会自动广播并返回一个矩阵,而非报错。 2. 关键问题:什么是“秩1数组”(Ra...
一、广播机制的作用 广播(Broadcasting)是 NumPy 中一种强大的机制,它允许对不同形状的数组进行算术运算,而无需显式地编写 for 循环。这不仅能显著提升代码运行速度,还能使代码更加简洁、易读。 ✅ 核心优势: 避免显式循环 提高计算效率(向量化) 减少代码行数 二、实际应用示例:计算食物热量百分比 1. 问题设定...
一、背景回顾 在上一节中,我们已经学会了如何通过向量化一次性计算整个训练集上的预测值: 对于 $m$ 个训练样本,输入矩阵为: \[X = \begin{bmatrix} | & | & & | \\ x^{(1)} & x^{(2)} & \cdots & x^{(m)} \\ | & | & &a...
🎯 核心目标 在不使用任何显式 for 循环的前提下,一次性对整个训练集(共 $M$ 个样本)进行前向传播(forward propagation)和激活值计算,从而大幅提升计算效率。这是深度学习中向量化(vectorization)的核心思想。 1️⃣ 传统方法 vs 向量化方法 ❌ 传统方法(低效) 对于每个训练样本 $x^{(i)} \in \mathbb{R}^{...
一、核心思想:避免显式 for 循环 黄金法则(Rule of Thumb) : 在编写神经网络或回归模型时,尽可能避免使用显式的 for 循环。 虽然有时无法完全消除循环,但只要能用 NumPy 等库的内置向量化函数替代,代码速度通常会显著提升。 原因: Python 的 for 循环在解释执行下效率低; NumPy 底层由 C/C++ 实现,支持 SIMD(单...