← 返回 Day 113 正文

Day 113 · 练习与清单

Day 113 练习题 - PyTorch 基础

练习 1:Tensor 操作

创建一个 5x5 的随机 Tensor,完成以下操作: - 计算每行的均值和每列的均值 - 找出所有大于 0.5 的元素,返回它们的索引 - 将 Tensor 重塑为 1x25 的向量 - 计算该向量的 L2 范数(使用 torch.norm())

要求:输出每一步的结果。


练习 2:自动求导验证

给定函数 $f(x, y, z) = (x + y^2) \cdot \sin(z)$,使用 PyTorch Autograd 计算在 $x=1, y=2, z=\pi$ 处的所有偏导数 $\frac{\partial f}{\partial x}$、$\frac{\partial f}{\partial y}$、$\frac{\partial f}{\partial z}$。

然后使用手动微分(链式法则)验证你的结果。

要求: - 使用 requires_grad=True 的 Tensor - 调用 .backward() 计算梯度 - 手动推导并验证


练习 3:梯度清零实验

不调用 grad.zero_(),连续运行 10 次反向传播,观察梯度的变化规律。

要求: - 绘制梯度值随迭代次数的变化图 - 解释为什么梯度会累积


练习 4:多元线性回归

将 Day 113 的线性回归代码扩展为多元线性回归(3 个特征): - 生成 100 个样本,3 个特征,真实权重为 $w = [2, -1, 0.5]$,偏置 $b = 0.3$ - 使用矩阵乘法实现:y_pred = x @ w + b - 训练 500 轮,学习率 0.01

要求: - 输出最终权重和偏置 - 计算最终的 MSE 损失


练习 5:GPU 加速对比(可选)

如果您的环境有 GPU: - 创建一个较大的 Tensor(如 10000x10000) - 分别在 CPU 和 GPU 上执行矩阵乘法 - 比较两种设备的运行时间

要求: - 使用 torch.cuda.Event() 或 time 模块计时 - 报告加速比