Lecture 13(Preparation):Network Compression

news2025/4/5 12:49:49

目录

Network Pruning

Knowledge Distillation

Parameter Quantization

Architecture Design

Dynamic Computation


下面介绍五个network compression的技术。这五个技术都是以软体为导向的,在软体上面对network进行压缩,不考虑硬体加速部分。

  • Network Pruning

——类神经网路剪枝(Pruning)与大乐透假说(Lottery Ticket Hypothesis)

Network can be pruned: Networks are typically over-parameterized (there is significant redundant weights or neurons). Prune them!

Network Pruning: 把参数/神经元当做修剪的单位,评估参数/神经元的重要性。步骤如下:

        ① lmportance of a weight: absolute values, life long ...

        lmportance of a neuron: the number of times it wasn't zero on a given data set ......

        ② After pruning, the accuracy will drop (hopefully not too much).

        ③ Fine-tuning on training data for recover.

        ④ Don't prune too much at once, or the network won't recover.

weight pruning v.s. neuron pruning

        把参数或神经元当做修剪的单位,在实作上有很显著的差距。

Why pruning?为什么不直接train一个smaller network,而要先train一个big network再进行剪枝?——lt is widely known that smaller network is more difficult to learn successfully. Lottery Ticket Hypothesis(大乐透假说).

Lottery Ticket Hypothesis:

        大乐透假说在实验上如何证实:

        有个研究对大乐透进行了解构:

大乐透的假说不一定是对的,之前的研究对比小model和大model的时候,设定update的epoch数目是一样的。在下面这个研究中,把小model多update几个epoch,小model的结果就比pruning后的model结果好:

  • Knowledge Distillation

为什么不直接train小的network?理由和Network Pruning一样,直接train一个小的network,结果比根据大的network学习出的小的network的结果差。

Knowledge Distillation:

        Knowledge Distillation为什么会有帮助,一个比较直觉的解释是teacher network会提供给student network额外的资讯。

teacher network不一定是一个单一的巨大的network,也可以是多个network的ensemble:

使用Knowledge Distillation的小技巧:稍微改一下softmax的function,加一个temperature

  • Parameter Quantization

——用比较少的空间储存一个参数

1. Using less bits to represent a value

2. Weight clustering

3. Represent frequent clusters by less bits, represent rare clusters by more bits

例如哈夫曼编码

4. Binary Weights. 可以压缩到只拿一个bit去存一个参数

下面是Binary Network中一个经典方法(Binary Connect)用在三个影像辨识问题上的结果,结果表明用Binary Connect的错误率比正常network的错误率低。一个可能的理由是,Binary Network给了network比较大的限制,所以它不太容易overfitting。

  • Architecture Design

——通过network架构的设计,达到减少参数量的效果

Standard CNN:

Depthwise Separable Convolution:

下面比较Standard CNN和Depthwise Separable Convolution这两者参数量的差异:

  • Dynamic Computation

——network可以自由调整它需要的运算量

怎么让network自由地调整它对运算资源的需求,一个可能的方向是让network自由的调整它的深度:Dynamic Depth

另一个可能的方向是让network自由的决定它的宽度:Dynamic Width

上面两个方向是由人自由的去决定network的宽度和深度,也可以让network根据它任务的复杂程度自行决定它的宽度和深度:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue校园宿舍管理系统

项目简介 分享一个SpringBootvue所做的一个项目,有需要的私信 1.项目描述 访问地址 http://localhost:8088/login.html?redirect_urlhttp://localhost:8087/myproject 超级管理员账户 账户名:admin 密码:123456 系统管理员账户 账户名…

【系统集成项目管理工程师】计算题专题一

一、决策树和期望货币值 1、项目经理向客户推荐了四种供应商选择方案。每个方案损益值已标在下面的决策树上。根据预期收益值,应选择设备供应商 A.供应商1B.供应商2C.供应商3D.供应商4 解题: 供应商 1:60% * 10000 (-30000&am…

DDR基础

欢迎关注我的博客网站nr-linux.com,图片清晰度和,排版会更好些,文章优先更新至博客站。 DDR全称Double Data Rate Synchronous Dynamic Random Access Memory,是当代处理器必不可少的存储器件之一。本文关于DDR介绍的核心点如下&…

Hadoop 3:YARN

YARN简介 Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器。 YARN是一个【通用资源管理系统和调度平台】,可为上层应用提供统一的资源管理和调度。 它的引入为集群在利用率、…

数据结构学习记录——堆的小习题(对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的)

目录 习题一 习题二 习题三 答案区 解析区 习题一 习题二 习题三 习题一 一、下列序列中哪个是最小堆? .2,55,52,72,28,98,71 .2,28,71,72&#x…

排序(数据结构系列13)

目录 前言: 排序算法的引言: 1.插入排序 1.1直接插入排序 1.2希尔排序 2.选择排序 2.1直接选择排序 2.2堆排序 3.交换排序 3.1冒泡排序 3.2快速排序 3.2.1Hoare版 3.2.2挖坑法 3.2.3前后指针法 4.归并排序 5.排序总结 结束语: 前言&…

docker容器日常操作命令

1.docker日常命令 文章目录 1.docker日常命令1.1.运行一个容器(run)1.1.1.创建contos 7.6容器 1.2.查询容器列表(ps)1.3.容器命名(--name)1.4.容器删除命令(rm)1.5.容器命令(inspect&#xff09…

【Vue2.0源码学习】变化侦测篇-Array的变化侦测

文章目录 1. 前言2. 在哪里收集依赖3. 使Array型数据可观测3.1 思路分析3.2 数组方法拦截器3.3 使用拦截器 4. 再谈依赖收集4.1 把依赖收集到哪里4.2 如何收集依赖4.3 如何通知依赖 5. 深度侦测6. 数组新增元素的侦测7. 不足之处8. 总结 1. 前言 上一篇文章中我们介绍了Object…

5 大分区管理器 - 最好的硬盘分区软件

分区是一个计算机术语,指的是在硬盘上创建多个区域,以允许操作系统和分区管理器软件有效且单独地管理每个区域中的信息。拥有大量计算机使用历史的人最有可能受益于多个分区。在硬盘中进行分区的好处之一是可以更轻松地将操作系统和程序文件与用户文件分…

node.js (fs文件系统模块,path路径模块,http模块web服务器)

node.js是js的后端运行环境 浏览器是js的前端运行环境 node.js是无法调用DOM和BOM和ajax等浏览器内置API node.js是一个基于ChromeV8引擎的JavaScript运行环境 目录 node.js可以做什么? node.js的学习路径 node安装 在node.js环境中执行javaScript代码 fs文…

Flask搭建api服务-生成API文档(Taobao/jd/1688API 调用文档说明)

API是给别人用的,就要告诉别人如何发现api,以及api的用途、名称、出参、入参,生成api文档的做法有好多种,本文选了一种最简单的方式。 核心就是通过app.view_functions 这个字典找到每个API 的endpoint所绑定的方法,然…

flutter的环境搭建步骤(MacBook Pro)

1.下载Flutter SDK包 地址:https://docs.flutter.dev/get-started/install/macos 2.配置环境变量 vim ~/.bash_profile //在打开的文件里增加一行代码,意思是配置flutter命令在任何地方都可以使用。 export PATH/app/flutter/bin:$PATH // 从新加载 sou…

JS 实现区块链同步和共识

JS 实现区块链同步和共识 之前实现了区块链和去中心化网络,这里实现区块链的同步和共识,不过本质上来说使用的的方法和 register & broadcast 的方法是一样的。 这个也是目前学习中倒数第二篇笔记了,最后两个部分学完,block…

机器视觉之线缆字符检测

在生活当中,随处可见与印刷字符有关的产品,比如:线缆上字符,键盘上的字符,衣物上的标签字符,电器上的字符等等。 而这些产品的外观由于字符在印刷时产生的一些瑕疵,如字符拉丝、移位、多墨、缺失…

身为管理层总是被下属怼,自己毫无威严,如何改变这样的现状?

身为一名管理层,被下属怼的感觉无疑是相当不爽的。毕竟,作为领导者,我们希望能够得到下属的尊重和信任,而不是被他们视为“摆设”。如果你也有类似的经历,那么不妨试试以下几种方法,来改变这种局面。 首先…

C++ Qt5.9学习笔记-事件1.5W字总结

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

物业管理系统【纯控制台】(Java课设)

系统类型 纯控制台类型(没有用到数据库) 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Idea或eclipse 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87753361 更多系统…

YOLOv5结合BiFPN:BiFPN网络结构调整,BiFPN训练模型训练技巧

目录 一、BiFPN网络结构调整1、堆叠BiFPN2、调整网络深度3、调整BiFPN的参数 二、训练技巧和注意事项1、数据增强2、学习率调度3、优化器选择4、权重初始化5、模型选择6、Batch size的选择7、模型保存和加载8、注意过拟合和欠拟合问题 三、实验结果和分析1、数据集和评估指标2、…

开发、部署应用程序APP的【12要素原则】你顺便了解一下?

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 开发、部署应用程序APP的【12要素原则】你顺便了解一下? ☘️摘要☘️介绍☘️背景☘️谁应该阅读这份文件?☘️十二要素原则🌿I. 代码库 Codebase&#x1f…

2.进程与线程

2.进程与线程 2.1 进程与线程 进程: 程序由指令和数据组成,指令要执行,数据要读写,就需要将指令加载到cpu,数据加载到内存,进程就是用来加载指令、管理IO、管理内存的当一个程序被执行,从磁盘…