
教程文档深度学习计算机视觉【免费下载链接】cs231n.github.ioPublic facing notes page项目地址https://gitcode.com/gh_mirrors/cs/cs231n.github.io点击查看免费下载本指南基于 CS231nStanford CS231n: Deep Learning for Computer Vision2022 春季学期第二次编程作业Assignment 2截止 2022 年 5 月 2 日 23:59 PST完整解析其六大任务多层全连接网络与更新规则、批归一化Batch Normalization、Dropout、卷积神经网络CNN、PyTorch 在 CIFAR-10 上的应用以及网络可视化Saliency Maps、Class Visualization、Fooling Images。读完本文你将掌握从手写反向传播到训练 CNN、再到用图像梯度解释模型行为的完整实战路径并能顺利完成作业的提交流程。作业概览目标与任务组成本次作业的核心是练习编写反向传播代码并训练神经网络与卷积神经网络。原文档明确列出的学习目标如下这也是贯穿全部 Notebook 的主线理解神经网络及其分层架构的排列方式理解并实现向量化的反向传播实现用于优化神经网络的多种更新规则update rules实现批归一化Batch Normalization与层归一化Layer Normalization以训练深层网络实现Dropout以正则化网络理解卷积神经网络的架构并获得训练它们的实践经验获得主流深度学习框架如 PyTorch的使用经验探索图像梯度的多种应用包括saliency maps、fooling images、class visualizations。整个作业由六个问题组成全部在 Colab Notebook 中完成问题Notebook核心任务Q1FullyConnectedNets.ipynb实现任意深度的全连接网络与多种更新规则Q2BatchNormalization.ipynb实现批归一化并用其训练深层全连接网络Q3Dropout.ipynb实现 Dropout 并研究其对泛化能力的影响Q4ConvolutionalNetworks.ipynb实现卷积网络中的若干常用新层Q5PyTorch.ipynb掌握 PyTorch 框架在 CIFAR-10 上训练自定义 CNNQ6Network_Visualization.ipynb基于预训练 SqueezeNet 计算图像梯度生成 saliency maps 与 fooling images环境准备Colab 工作流与本地虚拟环境推荐工作流官方强烈建议使用 Google Colaboratory 远程完成作业请先熟悉推荐的 Colab 工作流参见仓库内的 设置指南并观看作业页面内嵌的 Colab 操作演示视频。关键提醒务必周期性保存 NotebookFile - Save避免在暂时离开作业或 Colab VM 断线时丢失进度。本地开发官方并不正式支持本地开发但提供了requirements.txt文件可以用它搭建虚拟环境virtual env在本地运行 Notebook。如果你选择本地路线仓库内还有配套的 Jupyter 教程 可帮助快速上手。何时进入提交阶段完成除collect_submission.ipynb之外的所有 Colab Notebook 后即可进入本文最后的提交说明执行打包与上交。启动代码包含全部 Colab Notebook 的压缩包可在 assignments/2022/assignment2_colab.zip 获取本仓库的站点配置_config.yml通过hw_2_colab变量统一维护各年作业启动代码的下载入口2022 版作业页面即引用该变量渲染下载链接。Q1任意深度全连接网络与多种更新规则FullyConnectedNets.ipynb将引导你基于模块化层设计modular layer design实现任意深度的全连接网络。模块化设计的核心思想是把每个层Affine 线性层、ReLU 激活层等封装为独立的forward/backward接口forward计算输出backward接收上层传来的梯度并同时返回本层输入梯度与参数梯度这样网络可以像搭积木一样任意叠加深度反向传播也能逐层链式回传。在动手写代码前仓库配套笔记 neural-networks-2.md 提供了三个直接影响训练成败的预备知识数据预处理对数据矩阵X形状[N x D]最常见的是均值减法X - np.mean(X, axis0)对图像而言像素相对尺度已一致0~255归一化并非必需但零中心化非常重要且所有预处理统计量如均值只能在训练集上计算再统一应用到 val/test 集绝不能全量数据一起算再切分。权重初始化全零初始化会使所有神经元输出相同、梯度相同、更新相同破坏对称性必须避免对 ReLU 网络当前推荐使用 He 初始化w np.random.randn(n) * sqrt(2.0/n)n为神经元输入数保证各层输出方差可控。更新规则本问题要求实现多种主流优化更新规则。仓库中的 neural-networks-3.md 系统讲解了从朴素 SGD、Momentum、Nesterov 动量到 Adagrad、RMSProp、Adam 的演进脉络——朴素 SGD 收敛慢且易在病态曲面上震荡动量法累积历史梯度加速收敛Adam 则融合一阶矩与二阶矩估计是实践中应用最广的默认选择。作业中你会逐一实现并用数值梯度校验正确性再观察不同规则在训练曲线上的差异。Q2Batch Normalization在BatchNormalization.ipynb中你将实现批归一化层并把它应用到深层全连接网络的训练中。批归一化由 Ioffe 与 Szegedy 提出其核心思想是在训练开始阶段显式地把网络中每层的激活值强制拉回到单位高斯分布——这一操作可微因此可以嵌入网络内部、随训练同步更新本质上等价于把逐层预处理以可微方式内建进网络本身。仓库笔记 neural-networks-2.md 特别指出 BatchNorm 的两大收益其一使用批归一化的网络对糟糕的权重初始化显著更鲁棒缓解了深层网络初始化难、梯度信号衰减的问题其二实践中通常将 BatchNorm 层紧跟在全连接层或卷积层之后、非线性激活之前插入。注意训练与测试行为不同训练时使用当前 mini-batch 的均值/方差归一化同时维护滑动统计量测试时则用训练期累积的全局统计量做归一化且gamma、beta两个可学习参数负责恢复网络的表达能力。下图展示了批归一化对深度全连接网络训练过程的典型影响来自本仓库 assets/a2 目录与 Assignment 2 配套作业同时要求理解层归一化Layer Normalization与 BatchNorm 沿 batch 维度统计不同LayerNorm 沿特征维度对单个样本归一化因而不受 batch size 限制二者在统计维度上的差异与适用场景如 batch size 极小、序列模型值得对比思考。Q3DropoutDropout.ipynb将帮助你实现 Dropout并探究它对模型泛化能力的影响。Dropout 由 Srivastava 等人提出训练时以概率p随机将神经元置零其余保持激活测试时全部神经元参与计算。其直观解释是训练过程等价于在完整网络中反复采样子网络并只更新该子网络的参数测试则近似为对指数级子网络集合做集成预测。仓库笔记 neural-networks-2.md 给出了两种实现范式# Vanilla Dropout不推荐见说明 p 0.5 # 神经元保持激活的概率越大越少丢弃 def train_step(X): H1 np.maximum(0, np.dot(W1, X) b1) U1 np.random.rand(*H1.shape) p # 生成第一层 dropout mask H1 * U1 # 丢弃 H2 np.maximum(0, np.dot(W2, H1) b2) U2 np.random.rand(*H2.shape) p # 生成第二层 dropout mask H2 * U2 # 丢弃 out np.dot(W3, H2) b3 # ... 反向传播与参数更新未展示 def predict(X): # 测试时不做丢弃但必须按 p 缩放激活值以保持期望输出一致 H1 np.maximum(0, np.dot(W1, X) b1) * p H2 np.maximum(0, np.dot(W2, H1) b2) * p out np.dot(W3, H2) b3Vanilla Dropout 的缺点是在测试时仍需按p缩放激活值——由于测试性能至关重要实践中应使用inverted dropout把缩放除以p挪到训练时完成测试前向传播保持原样。这样即使日后调整 Dropout 位置或强度预测代码也无需改动# Inverted Dropout推荐实现 p 0.5 # 神经元保持激活的概率 def train_step(X): H1 np.maximum(0, np.dot(W1, X) b1) U1 (np.random.rand(*H1.shape) p) / p # 注意此处除以 p H1 * U1 H2 np.maximum(0, np.dot(W2, H1) b2) U2 (np.random.rand(*H2.shape) p) / p # 注意此处除以 p H2 * U2 out np.dot(W3, H2) b3 # ... 反向传播与参数更新未展示 def predict(X): H1 np.maximum(0, np.dot(W1, X) b1) # 无需任何缩放 H2 np.maximum(0, np.dot(W2, H1) b2) out np.dot(W3, H2) b3期望值推导可以解释为何必须缩放某神经元输出为x丢弃前Dropout 后其期望输出为px (1-p)*0 px因此测试时保持神经元常激活就必须把输出调为pxinverted dropout 则是把这一调整内推到训练阶段。笔记还建议实践中p 0.5是合理默认值但可以在验证集上微调Dropout 通常与全局 L2 正则化组合使用。下图来自 Dropout 论文直观展示了训练时随机失活与测试时全量激活的机制仓库路径 assets/nn2/dropout.jpegQ4卷积神经网络ConvolutionalNetworks.ipynb要求你实现卷积网络中若干常用新层并训练较浅的卷积网络。核心要点包括卷积层通过局部感受野与参数共享在保留空间结构的同时大幅减少参数量需要正确处理空间维度公式即输出尺寸由输入尺寸、滤波器尺寸、步长stride与填充padding共同决定池化层常见的是最大池化max pooling与平均池化用于在空间维度下采样、增强平移不变性反向传播为卷积与池化层实现各自的backward函数并用数值梯度校验其正确性——这通常是最容易出错、也最能检验你是否真正理解卷积运算细节的部分。仓库配套笔记 convolutional-networks.md 系统讲述了卷积层的层结构、感受野、共享权重、池化层的动机以及空间排列的超参数深度、步长、零填充是完成本问题的最佳理论参照understanding-cnn.md 则从可视化角度帮助你理解训练好的 ConvNet 究竟学到了什么激活图、滤波器、最大激活图像检索等。Q5PyTorch 与 CIFAR-10PyTorch.ipynb将带你上手 PyTorch 这一流行且强大的深度学习框架。Notebook 会先教你框架的基本工作方式张量、nn.Module、自动求导、优化器与数据加载最终任务是在CIFAR-10数据集上训练一个自行设计的卷积网络尽可能取得最佳性能。完成本问题时可参考仓库内的配套素材CIFAR-10 相关的训练技巧与网络架构建议见 convnet-tips.md其中包含模型设计、数据增强、训练技巧与消融实验等实用经验transfer-learning.md 则介绍了借助预训练模型做迁移学习的另一种提升路径。注意 Q5 使用 GPU 训练会显著提速在 Colab 中可通过Runtime - Change runtime type将硬件加速器切换为 GPU本问题笔记本默认即推荐 GPU 环境。Q6网络可视化Saliency Maps、Class Visualization、Fooling ImagesNetwork_Visualization.ipynb将引入预训练 SqueezeNet模型教你对图像本身计算梯度并利用这些梯度生成两类产物Saliency Maps显著性图计算损失对输入图像的梯度取绝对值并按通道聚合得到哪些像素对分类结果影响最大的热力图。其理论依据是 Deep Inside Convolutional Networks 提出的 data gradient 方法——仓库笔记 understanding-cnn.md 的 Visualizing the data gradient 一节正是对这一方向Saliency Maps的综述Fooling Images欺骗图像通过梯度上升在图像上叠加扰动使模型把一张原本分类正确的图像错分为指定目标类别从而直观展示模型决策的脆弱性。这一思想与 Explaining and Harnessing Adversarial Examples 中对抗样本的成因一脉相承仓库笔记 understanding-cnn.md 的 Fooling ConvNets 一节对此有专门论述。此外Class Visualization类别可视化通过梯度上升优化输入让网络画出最能激活某一类别得分的图像与 Saliency Maps 互为补充前者解释模型看了哪里后者揭示模型期待看到什么。完成本问题时务必在 GPU 运行时环境下执行并留意 Notebook 对梯度归一化与可视化预处理如反归一化到 0~255的具体要求。提交你的工作重要提交前请确保所有 Notebook 都已运行且单元格输出可见。完成全部 Notebook 并填写必要代码后按以下步骤提交在 Colab 中打开collect_submission.ipynb并依次执行单元格。该脚本会生成包含你代码.py与.ipynb的压缩包a2_code_submission.zip将全部 Notebook 合并转换为一个 PDF 文件。若此步成功你会看到如下提示信息### Done! Please submit a2_code_submission.zip and a2_inline_submission.pdf to Gradescope. ###将 PDF 与 zip 文件提交到课程指定的Gradescope页面2022 春季课程。别忘了提交前先把a2_code_submission.zip和a2_inline_submission.pdf下载到本地再从本地完成上传。同时建议确保 Notebook 的核执行顺序是时间顺序若曾乱序执行可通过 Colab 菜单Runtime - Restart and Run All重启并重跑全部单元格以避免 Gradescope 自动评分器解析异常。仓库配套资源导航为配合本次作业本仓库提供了完整的课程笔记与素材可按需查阅neural-networks-2.md数据预处理、权重初始化、批归一化、Dropout 与损失函数Q1/Q2/Q3 的理论基础neural-networks-3.md更新规则与超参数调优Q1 的优化器实现convolutional-networks.md卷积层、池化层与空间排列超参数Q4understanding-cnn.mdConvNet 可视化方法综述Q6convnet-tips.md 与 transfer-learning.mdCNN 训练技巧与迁移学习Q5setup.md、jupyter-notebook-tutorial.ipynb环境设置与 Notebook 使用入门assignments/2022/assignment2_colab.zip本年度作业启动代码压缩包。赞分享教程文档深度学习计算机视觉【免费下载链接】cs231n.github.ioPublic facing notes page项目地址https://gitcode.com/gh_mirrors/cs/cs231n.github.io点击查看免费下载相关推荐draw.io 桌面版 Windows 快速安装免费的开源绘图工具装完就能画流程图draw.io 桌面版 Windows 快速安装免费的开源绘图工具装完就能画流程图 把免费的开源 draw.io 桌面版装到 Windows 上全程不花一教程文档深度学习计算机视觉PrimeNG v20 LTS 变更解读20.5.1 / 20.5.0 增强与修复全解析PrimeNG v20 LTS 变更解读20.5.1 / 20.5.0 增强与修复全解析 本文围绕 PrimeNGAngular UI 组件库v20 长期教程文档深度学习计算机视觉Seed-VC零样本语音转换的终极解决方案5分钟开启声音克隆新时代Seed VC零样本语音转换的终极解决方案5分钟开启声音克隆新时代 你是否曾梦想过瞬间复制任何人的声音无论是为视频配音、游戏角色创作还是实时语音互动人工智能语音音频上一篇大疆固件逆向全解析5 个 Python 工具拆开机内加密与签名下一篇Amethyst 资产格式Formats完全指南从内置格式到自定义格式实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考