斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

article/2025/10/5 11:16:18

640?wx_fmt=gif

向AI转型的程序员都关注了这个号👇👇👇

机器学习AI算法工程  公众号: datayx

作为全球计算机四大名校之一,斯坦福大学的CS230《深度学习》课程一直受到全球计算机学子和从业人员的热烈欢迎。

CS230授课人为全球著名计算机科学家吴恩达和他的助教Kian Katanforoosh。

日前,MIT的Afshine Amidi 和斯坦福大学的Shervine Amidi在博客上整理了一份CS230课程知识点的归纳总结,在Reddit上引发热议。

640?wx_fmt=png

评论网友纷纷表示喜大普奔,对于没有条件上课或者没赶上授课时间的人来说,看看这份总结贴也能获益颇丰。

 

640?wx_fmt=png

这份总结提要基本遵循CS230的授课思路和流程,分三大方面由浅入深地介绍了深度学习的基本概念、网络模型、研究和实验操作方法等。三部分内容分别为:卷积神经网络、递归神经网络、提示与技巧。

 

本文主要介绍这份总结的第一部分,即CNN部分的内容,后两部分RNN、窍门与技巧部分,读者可自行参看Github上放出的资源:

卷积神经网络(CNN)

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-convolutional-neural-networks

递归神经网络(RNN)

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks

技巧与窍门

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-deep-learning-tips-and-tricks

囊括全部内容的“超级VIP”pdf下载

https://github.com/afshinea/stanford-cs-230-deep-learning/blob/master/super-cheatsheet-deep-learning.pdf

卷积神经网络结构:卷积层、池化层、全连接层

640?wx_fmt=png

传统的卷积神经网络由输入图像、卷积层、池化层和全连接层构成。

640?wx_fmt=png

卷积层(CONV):使用过滤器执行卷积操作,扫描输入大小。它的超参数包括滤波器的Size和Stride。结果输出O称为特征映射或激活映射。

640?wx_fmt=png

池化层(POOL)是一种下采样操作,通常在卷积层之下使用,该卷积层执行一些空间不变性。其中最大池化和平均池化属于特殊操作,分别采用最大值和平均值。

640?wx_fmt=png

全连接层(FC)在平坦输入上运行,每个输入都连接到所有神经元。如果全连接层存在,通常位于网络体系结构的末尾,可用于优化诸如分类评分等目标。

过滤器超参数

过滤器维度: 大小为F×F的过滤器应用在C channel上维度为F×F×C。

640?wx_fmt=png

Stride:对于卷积和池化操作而言,Stride表示每次操作后窗口移动的像素数量。

Zero-padding表示对输入边界的每一端加入P个零的过程。这个值可以通过下图中所示的三个方式手动指定,也可以自动设置。

 

640?wx_fmt=png

 

超参数的调整

卷积层中的超参数兼容性:记输入量长度为I,过滤器长度为F,补零数量为P,Stride量为S,则该维度下特征映射的输出大小O可用下式表示:

640?wx_fmt=png

理解模型的复杂度:为了获取模型复杂度,常常可以通过相应架构下的参数数量来达到这一目标。在给定的卷积神经网络层中,该过程如下图所示:

 

640?wx_fmt=png

 

感受野:层K上的感受野区域记为Rk×Rk,即第K次激活映射可以“看见”的每个输入像素。若层j上的过滤器大小为Fj,层i上的Stride值为Si,且S0=1,则层k上的感受野可以由下式计算出:

640?wx_fmt=png

常用激活函数

 

整流线性单元 : 整流线性单元层(ReLU)是激活函数g,作用于所有元素。它旨在为网络引入非线性特征,其变量总结在下图中:

640?wx_fmt=png

 

Softmax:可以视作一个作用于网络架构末端通用逻辑函数,输入为分数向量,输出为概率向量。其定义如下:

 

640?wx_fmt=png

物体检测

模型的类型:

有三类主要的物体识别算法,其预测的性质是不同的。如下表的描述:

640?wx_fmt=png

三类物体识别算法

检测(Detection)

在对象检测的上下文中,根据我们是仅想要定位对象还是想要在图像中检测更复杂的形状,可以使用不同的方法。下面总结了两个主要的方法:

640?wx_fmt=png

边界框检测和特征点检测

Intersection over Union:

Intersection over Union(交并比),也称为IoU,是一种量化预测边界框640?wx_fmt=png在实际边界框640?wx_fmt=png上的正确定位的函数。它的定义是:

640?wx_fmt=png

备注:IoU∈[0,1]。按照惯例,如果IoU(Bp,Ba)⩾0.5,预测边界框Bp被认为是合理的。

640?wx_fmt=png

Anchor boxes:

Anchor boxing是一种用于预测重叠边界框的技术。在实际应用中,网络可以同时预测多个box,其中每个box的预测被约束具有给定的一组几何特性。例如,第一个预测可能是给定形状的矩形框,而第二个预测可能是另一个形状不同的矩形框。

Non-max suppression:

Non-max suppression技术旨在通过选择最具代表性的对象来删除同一对象的重叠边界框。在删除了概率预测低于0.6的所有框之后,在剩余框中重复以下步骤:

对于一个给定的类,

步骤1:选择具有最大预测概率的框。

步骤2:删除任何与前一个框的IoU⩾0.5的框。

640?wx_fmt=png

YOLO - You Only Look Once,这是一种对象检测算法,它执行以下步骤:

步骤1:将输入图像分割成G×G的网格。

步骤2:对于每个网格单元,运行一个CNN网络,预测下面公式中的y:

640?wx_fmt=png

其中640?wx_fmt=png是检测对象的概率,640?wx_fmt=png是检测到的边界框的属性,640?wx_fmt=png是检测到的p类的one-hot representation,k是anchor boxes的数量。

步骤3:运行 non-max suppression 算法,删除任何可能的重复重叠边界框。

640?wx_fmt=png

R-CNN

Region with Convolutional Neural Networks (R-CNN) 是一种对象检测算法,它首先对图像进行分割以找到潜在的相关边界框,然后运行检测算法,在那些边界框中找到最可能的对象。

640?wx_fmt=png

备注:虽然原始算法计算成本高且速度慢,但新的架构能让算法运行得更快,例如Fast R-CNN和Faster R-CNN。

面部验证和识别

模型类型:下面总结了两种主要类型的模型:

640?wx_fmt=png

One Shot Learning

One Shot Learning是一种面部验证算法,它使用有限的训练集来学习相似函数,该函数量化两个给定图像的差异。应用于两个图像的相似度函数通常被标注为d(image 1,image 2).。

Siamese Network

Siamese Networks的目的是学习如何编码图像,然后量化不同的两个图像。对于给定的输入图像640?wx_fmt=png,编码输出通常记为640?wx_fmt=png

Triplet loss

Triplet loss ℓ是在图像A (anchor), P (positive) 和N (negative)这三个图像的嵌入表示上计算的损失函数。 anchor和positive示例属于同一个类,negative示例属于另一个类。通过调用640?wx_fmt=pngmargin参数,该损失定义如下:

640?wx_fmt=png

640?wx_fmt=png

神经风格迁移

动机:

神经风格转移(neural style transfer)的目标是基于给定内容C和给定风格S,生成图像G。

640?wx_fmt=png

激活:

在给定层l中,激活被标记为640?wx_fmt=png,并且具有维度640?wx_fmt=png

内容成本函数(Content cost function)

内容成本函数640?wx_fmt=png用于确定生成的图像G与原始内容图像C的不同之处。它的定义如下:

640?wx_fmt=png

风格矩阵(Style matrix)

style matrix640?wx_fmt=png是一个Gram矩阵,其中每个元素640?wx_fmt=png量化了通道k和k'的相关性。它是根据激活640?wx_fmt=png定义的:

640?wx_fmt=png

风格成本函数(Style cost function )

风格成本函数640?wx_fmt=png用于确定生成的图像G与风格S的不同之处。它的定义如下:

640?wx_fmt=png

总成本函数(Overall cost function)

总成本函数的定义是内容和风格成本函数的组合,由参数α, β加权,如下所示:

640?wx_fmt=png

使用计算技巧的架构

生成对抗网络(Generative Adversarial Network)

生成对抗网络,也称为GAN,由生成模型和判别模型组成,其中生成模型旨在生成最真实的输出,这些输出将被用于区分生成图像和真实图像。

640?wx_fmt=png

ResNet(Residual Network)

残差网络架构(也称为ResNet),使用具有大量层的residual blocks来减少训练误差。 residual blocks 具有以下特征:

640?wx_fmt=png

Inception Network 

该架构使用 inception modules,目的是尝试不同的卷积,以通过特征的多样化来提高其性能。具体来说,它使用1×1卷积技巧来限制计算负担。

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-convolutional-neural-networks

阅读过本文的人还看了以下:

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

640?wx_fmt=png


http://chatgpt.dhexx.cn/article/l82dQZ9L.shtml

相关文章

CS230学习笔记(一)

CS230学习笔记(一) 1.前言 ok,前思后想,左思右想,我还是觉得自己得督促一下自己,所以,我觉得开始更新cs230的笔记,当然,我前面的六篇pytorch学习笔记我是不会放着不管的,后面肯定会…

目标检测(CS230)

内容来自CS230课程。 目录 目标定位(Object localization) 特征点检测(Landmark detection) 基于滑动窗口的目标检测算法 滑动窗口的卷积实现 (Convolutional implementation of sliding windows) 网络中的…

PHP配置环境变量

1.找到“高级系统设置”(二选一的方法找到环境变量) ① 我的电脑-属性-高级-环境变量 ②win8,10 直接在搜索框搜 “查看高级系统设置”-环境变量 2.找到变量"Path" ①加上 “E:\phpStudy\PHPTutorial\php\php-7.0.12-nts” (php.e…

PHPstudy 设置PHP为环境变量

1.首先启动phpstudy点击‘切换版本’查看当前使用环境的php版本 2.在右键点击桌面的phpstudy图标进入文件夹位置 2.点击PHPTutorial->PHP 3.点击你的开发版本的php文件,我们会看到php.exe文件,复制当前文件位置路径 4.右键点击计算机或者我的电脑选择…

windows环境下设置多个PHP版本的环境变量

windows环境下设置多个PHP版本的环境变量 所在位置修改系统变量修改用户变量重启电脑 所在位置 我的电脑->属性->高级系统设置->高级->环境变量 根据图示,找到相应的变量 修改系统变量 环境变量->系统变量->Path 系统变量:把两个…

windows10的PHP环境变量

win10 环境变量配置 如何在命令行运行php文件 1.配置环境变量 2.进入php所在路径 然后输入 php 文件路径/文件名 即可 参考文献: https://blog.csdn.net/QQ2542920524/article/details/78692116

Windows环境下,PHPStudy设置环境变量

win7系统设置环境变量 1、选中计算机,点击 鼠标右键,选择属性 2、选择高级系统设置,打开,打开后选择高级,然后就能看到环境变量 3、打开环境变量,查找Path ,选中path,再点击编辑即可…

【PHP】配置环境变量,查看php版本(保姆级图文)

目录 配置环境变量找到php所在的目录(有一个php.exe文件)环境变量path中添加重启电脑(可选) 查看php版本(检测是否成功配置了php)总结 『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系…

windows中设置php环境变量

1.我的电脑-》右键(选择我的属性) 2.点击高级设置 3.点击环境变量 4.在系统变量中找到Path 点击 5.找到php.exe的文件目录,添加到path中 6.php -v 显示版本,表示成功

Linux有多个php版本的时候指定php版本设置环境变量

最近在安装swoole的时候老是出错,安装完成以后再php-m中能看到swoole扩展已经开启,而在 phpinfo中却看不到。查看了下php.ini的位置发现这两个指向的路径不同。查看了下安装的php有两个版本,一个是自带的在/usr/bin/php,一个是自己…

windows设置php环境变量

1、找到要设置的php版本路径,然后进行复制 2、添加环境变量(控制面板->高级系统设置->环境变量->最上方的李硕的系统变量Path->新增两条php路径即可) 3、打开cmd输入php-v 即可查看添加的php版本信息 最后问题没有解决的话,或者有…

配置windows系统中 PHP的环境变量

1. 首先到php官网下载php-5.3.6-nts-Win32-VC9-x86.ZIP 解压到电脑硬盘。将文件解压到文件夹php5.3.6 下载地址:http://www.php.net/downloads.php 2. 将解压后的php5.3.6文件夹放到E:\Program Files文件夹下面 3. php目录下的“p…

w11 php 环境变量

PHP 安装 解压完成后 进入目录 php -v 得到版本号就OK,配置环境变量 安装composer 全部下一步就可以了 命令行中 composer 出现composer版本号安装没问题,如果没有从新找下 加入到环境变量中,如果还不行,就重新安装 更新 co…

Windows 系统配置 PHP 环境变量(PhpStudy集成环境)

打开系统的【高级系统设置】,点击【环境变量】。 选择【系统变量】中的【Path】,点击编辑。 点击【新建】,填入当前 PHP 版本 php.exe 所在目录,点击确定。 验证有效性 打开命令行窗口,输入 php -v 查看。 出现 PHP 的…

windows下设置PHP环境变量

# 安装php # 扩展 mysql 、gd、sockets (我的是已安装好的wamp) #在php目录下的、打开php.ini 去掉下面注释(前面的分号) ; On windows: ; extension_dir "ext" #添加环境变量 win7为:右击计算机-属性-高级系统设…

为php设置系统变量、环境变量

看到这个标题,有两个疑问,是给php.exe设置系统环境变量,还是给编程语言设置可直接调用环境变量,说到这里有的人可能晕了,因为我们常见到的都是第一种,相当于给某个命令设置快捷键,不用进到安装该…

配置php环境变量及其作用

未配置PHP环境变量 一般情况下,在使用php时,不需要配置环境变量,只要在PHP.ini指定扩展的组件dll的ext路径和include环境路径即可,但cmd命令行在其他目录下运行php会报错。 配置PHP环境变量 配置环境变量,我们可以轻松…

Java IO操作详解

在Java编程中,IO(输入输出)是重要的组成部分,Java应用常常需要从外界输入数据或者把数据输出到外界。 Java IO的核心用一句话概括:抽象类或接口之中的抽象方法会根据实例化子类的不同,会完成不同的功能。所…

C++中的IO操作

IO操作 了解C中的IO操作C中的二进制读写&#xff0c;文本读写C中的stringstream类与I/O操作中对<<与>>运算符的重载 了解C中的IO操作 我们学习IO操作&#xff0c;就要先了解什么是IO操作&#xff0c;从名字中就可以看出来&#xff0c;I,O就代表着输入输出的操作&a…

处理器的IO操作

文章目录 1 IO空间的分类1.1 内存映射IO空间1.2 独立IO空间 2 处理器操作外设的基本方式3 内存映射IO空间的硬件设计3.1 硬件设计的关键3.2 设备地址映射示例 1 IO空间的分类 处理器与外设之间的数据通信通过IO操作完成。 1.1 内存映射IO空间 对于内存映射IO空间&#xff1a…