查询网站备案服务商,南充房产,河南安阳吧,招生代理平台原文#xff1a;FLOPs#xff08;Floating-point operations#xff09;是浮点计算量的简称[17]#xff0c;通常使用 FLOPs 来表示模型的计算复杂度。将一个输入通道数为#x1d436;#x1d456;#x1d45b;#xff0c;输出通道数为#x1d436;#x1d45c;#…原文FLOPsFloating-point operations是浮点计算量的简称[17]通常使用 FLOPs 来表示模型的计算复杂度。将一个输入通道数为输出通道数为的卷积层简化记为[, , ]表示这个卷积层里有个 × × 的卷积单元分别和输入特征进行卷积操作。这里我们将一次乘加(multiply and accumulate)算作两个浮点运算所以对于输入为 × × 的特征经过这一层卷积的浮点运算量为FLOPs 22 其中表示偏置加法带来的计算量。参数量即为所含参数的数量一个卷积层的参数量Params 2 等号右边的两项分别表示卷积核和偏置的参数量。我们使用一个两层的卷积网络来展示滤波器剪枝的细节为简化模型我们均使用卷积核为 3、步长为 1 的普通卷积并且不考虑卷积中的偏置操作。在我们的简化模型中每层卷积的浮点计算量为18参数量为9。一、先吃透第一个核心概念FLOPs原文第一句原文说“FLOPsFloating-point operations是浮点计算量的简称[17]通常使用 FLOPs 来表示模型的计算复杂度。”大白话解释FLOPs 就是“浮点计算的次数”简单说就是「模型做计算时一共要算多少次小数的乘法和加法」比如 1.2×3.4 是一次浮点乘法5.67.8 是一次浮点加法。它的作用是衡量“模型计算起来费不费力”—— FLOPs 越大模型计算越复杂越费电脑算力比如手机跑起来越卡电脑跑起来越慢。原文标注[17]是参考文献不用管咱们重点看后面的计算逻辑原文没丢这个标注这里也跟大家说清楚不遗漏。二、卷积层的简化记法[Cout, Cin, K]原文第二、三句重点不丢细节原文说“将一个输入通道数为Cin输出通道数为Cout的卷积层简化记为[Cout, Cin, K]表示这个卷积层里有Cout个Cin×K×K的卷积单元分别和输入特征进行卷积操作。”逐符号拆解每个字母都对应原文不遗漏Cin输入通道数 → 大白话输入给这层卷积的“特征种类数”。比如输入是一张彩色图片图片有红、绿、蓝3种颜色通道那 Cin3如果是黑白图片Cin1。Cout输出通道数 → 大白话这层卷积处理完后输出的“新特征种类数”。比如这层卷积负责提取图片的“边缘特征”“纹理特征”提取出64种不同的特征那 Cout64。K卷积核的边长 → 大白话卷积层里用来“筛选特征”的小模板叫卷积单元/滤波器的边长。比如 K3就是一个 3×3 的小方格模板像咱们玩的九宫格。[Cout, Cin, K] 的完整含义原文原话拆解这个卷积层里一共有 Cout 个“小模板”卷积单元每个小模板的尺寸是 Cin×K×K。举例子帮你理解如果记为 [64, 3, 3]就是说这层有 64 个小模板每个小模板是 3×3×3 的尺寸Cin3K3所以是 3×3×3—— 为什么是3个3因为输入有3种通道Cin3每个通道都要对应一个3×3的小方格合起来就是 3×3×3 的小模板。原文补充“分别和输入特征进行卷积操作” → 大白话这 Cout 个小模板每个都要单独扫一遍输入的特征各自算出一个输出结果最后把所有结果合起来就是这层卷积的输出。三、完整FLOPs公式的推导原文第四句核心不丢任何一项公式一步步拆原文说“这里我们将一次乘加(multiply and accumulate)算作两个浮点运算所以对于输入为H×W×Cin的特征经过这一层卷积的浮点运算量为 FLOPs 2HW Cin K² Cout HW Cout其中 HW Cout 表示偏置加法带来的计算量。”先拆每个新符号原文新增不遗漏H输入特征的高度 → 大白话输入给卷积层的特征图比如图片的“上下长度”比如一张图片高224像素那 H224。W输入特征的宽度 → 大白话输入特征图的“左右宽度”比如一张图片宽224像素那 W224。H×W×Cin输入特征的总尺寸 → 大白话输入的所有特征的“总量”比如 H224、W224、Cin3总量就是 224×224×3 个特征点。再拆关键前提原文重点不能丢“一次乘加算作两个浮点运算”大白话解释“乘加”就是“先做一次乘法再做一次加法”比如 2×34就是一次乘加。原文规定这样一次乘加算2次浮点运算乘法算1次加法算1次合起来2次—— 这是原文的规则必须保留不然公式没法理解。公式逐一项拆解原文公式的每一项都讲透不跳步第一项2HW Cin K² Cout → 这是“所有卷积单元小模板做乘加运算的总工作量”拆解步骤跟着原文逻辑第一步一个卷积单元小模板Cin×K×K扫一遍输入特征H×W×Cin要做多少次乘加小模板是 K×K 的扫输入特征时每移动一步就要做 K×K×Cin 次乘加因为每个通道都要对应 K×K 个点相乘再相加。输入特征是 H×W 的小模板扫完整个输入一共要扫 H×W 步每一步对应一个输出点。所以一个卷积单元的乘加次数 H×W×Cin×K×K即 HW Cin K²。第二步一次乘加算2次浮点运算所以一个卷积单元的 FLOPs 2×HW Cin K²。第三步这个卷积层有 Cout 个卷积单元原文[Cout, Cin, K]的定义所以所有卷积单元的总 FLOPs 2×HW Cin K² × Cout也就是 2HW Cin K² Cout。第二项HW Cout → 这是“偏置加法带来的计算量”原文明确说明不丢大白话解释“偏置”就是每个卷积单元输出结果后还要加一个固定的小数比如加0.1、加0.5用来微调结果。为什么是 HW Cout因为每个卷积单元扫完输入会输出一个 H×W 大小的结果和输入特征的长宽一样Cout 个卷积单元就有 Cout×H×W 个输出点每个输出点都要加一次偏置一次加法算1次浮点运算所以这部分的计算量就是 HW Cout。完整公式FLOPs 第一项卷积乘加 第二项偏置加法 → 就是原文的公式没有任何遗漏。四、参数量Params的公式推导原文第五句不丢任何一项原文说“参数量即为所含参数的数量一个卷积层的参数量 Params K² Cin Cout Cout等号右边的两项分别表示卷积核和偏置的参数量。”先拆定义原文第一句参数量 这个卷积层里所有“需要训练调整的数值”的总数大白话模型的“零件数”零件越多占电脑内存越大。公式逐一项拆解原文明确两项含义不丢第一项K² Cin Cout → 卷积核小模板的参数量大白话每个小模板卷积单元是 K×K×Cin 的尺寸这个尺寸里的每一个“格子”都有一个固定的数值需要训练调整这些数值就是参数量。所以一个小模板的参数量 K×K×CinK² Cin。整个卷积层有 Cout 个小模板所以所有卷积核的参数量 K² Cin × Cout即 K² Cin Cout。第二项Cout → 偏置的参数量大白话每个卷积单元小模板都对应一个偏置值用来微调输出和前面FLOPs里的偏置是一回事Cout 个卷积单元就有 Cout 个偏置值所以偏置的参数量是 Cout。完整公式Params 卷积核参数量 偏置参数量 → 原文公式无遗漏。五、简化模型设定原文第六、七句所有条件都保留不丢原文说“我们使用一个两层的卷积网络来展示滤波器剪枝的细节为简化模型我们均使用卷积核为 3、步长为 1 的普通卷积并且不考虑卷积中的偏置操作。在我们的简化模型中每层卷积的浮点计算量为18HW Cin Cout参数量为9Cin Cout。”逐条件拆解原文所有简化条件都保留不丢一个模型结构两层卷积网络不是多层就是简单的两层用来演示剪枝原文明确。卷积核设定卷积核边长 K3所有层都一样原文说“均使用卷积核为3”。步长设定步长1卷积时小模板每次移动1个格子原文明确。卷积类型普通卷积不是其他特殊卷积原文明确。关键简化不考虑偏置操作原文重点→ 意味着偏置加法的计算量没有了FLOPs公式里的第二项 HW Cout 去掉偏置的参数量没有了Params公式里的第二项 Cout 去掉。简化后公式的推导原文简化公式一步步来不丢逻辑简化后的 FLOPs 18HW Cin Cout原文公式推导结合前面的完整公式简化条件完整公式里去掉偏置项HW Cout剩下 FLOPs 2HW Cin K² Cout。简化条件里 K3所以 K²9代入得FLOPs 2×HW Cin×9×Cout 18HW Cin Cout和原文简化公式完全一致没有遗漏逻辑。简化后的 Params 9Cin Cout原文公式推导结合前面的完整公式简化条件完整公式里去掉偏置项Cout剩下 Params K² Cin Cout。简化条件里 K3K²9代入得Params 9×Cin×Cout 9Cin Cout和原文简化公式完全一致无遗漏。最后总结确保覆盖原文所有信息不丢任何一句咱们再对照原文捋一遍所有内容都对应上了FLOPs的定义作用卷积层[Cout, Cin, K]的记法含义一次乘加算2次浮点运算的规则完整FLOPs公式含偏置项 每一项的含义完整参数量公式含偏置项 每一项的含义简化模型的所有条件两层、K3、步长1、普通卷积、无偏置简化后的FLOPs和参数量公式推导逻辑。