Leon Yi

19 避免 NumPy 中的“秩1数组”(Rank-1 Array)陷阱

1. 问题背景:NumPy 的灵活性是一把双刃剑 优点:Python + NumPy 提供了强大的广播机制(broadcasting),使得代码简洁、表达力强。 缺点:过度灵活可能导致隐蔽的 bug,尤其在向量维度处理上容易出错。 例如:将列向量与行向量相加,本应报错,但 NumPy 会自动广播并返回一个矩阵,而非报错。 2. 关键问题:什么是“秩1数组”(Ra...

18 Python 中的广播机制(Broadcasting in Python)

一、广播机制的作用   广播(Broadcasting)是 NumPy 中一种强大的机制,它允许对不同形状的数组进行算术运算,而无需显式地编写 for 循环。这不仅能显著提升代码运行速度,还能使代码更加简洁、易读。 ✅ 核心优势: 避免显式循环 提高计算效率(向量化) 减少代码行数 二、实际应用示例:计算食物热量百分比 1. 问题设定...

16 向量化逻辑回归(Vectorizing Logistic Regression)

🎯 核心目标   在不使用任何显式 for 循环的前提下,一次性对整个训练集(共 $M$ 个样本)进行前向传播(forward propagation)和激活值计算,从而大幅提升计算效率。这是深度学习中向量化(vectorization)的核心思想。 1️⃣ 传统方法 vs 向量化方法 ❌ 传统方法(低效)   对于每个训练样本 $x^{(i)} \in \mathbb{R}^{...

15 更多向量化示例(More Vectorization Examples)

一、核心思想:避免显式 for 循环 黄金法则(Rule of Thumb) : 在编写神经网络或回归模型时,尽可能避免使用显式的 for 循环。 虽然有时无法完全消除循环,但只要能用 NumPy 等库的内置向量化函数替代,代码速度通常会显著提升。   原因: Python 的 for 循环在解释执行下效率低; NumPy 底层由 C/C++ 实现,支持 SIMD(单...

14 向量化(Vectorization)

1. 什么是向量化?   向量化 是指避免在代码中使用显式的 for 循环,转而使用高度优化的矩阵/向量运算(如 NumPy 中的内置函数),从而大幅提升计算效率。 在深度学习中,我们经常处理大规模数据集(例如百万级特征或样本)。如果使用非向量化实现,程序运行会极其缓慢;而向量化能充分利用 CPU/GPU 的并行计算能力(SIMD 指令),使代码快数百倍甚至上千倍。 2. ...

11 使用计算图求导(Derivatives with a Computation Graph)

🧠 课程核心思想   在深度学习中,反向传播(Backpropagation) 是通过计算图(Computation Graph) 高效计算损失函数对各参数偏导数的核心机制。 本节通过一个具体例子,展示了如何利用链式法则(Chain Rule) 沿着计算图从右向左(backward pass) 逐层计算梯度。 📐 示例函数与计算图结构   考虑如下函数: [J = 3v,...