机器学习李宏毅学习笔记34

news2024/12/25 23:31:30

文章目录

  • 前言
  • 一、Knowledge distillation
  • 二、Parameter quantization
  • 三、Architecture design
  • 四、Dynamic computation
  • 总结


前言

神经网络压缩(二)其他方法


一、Knowledge distillation

先train一个大的network叫做teacher network,小的network叫做student network。Student network跟teacher network学。假设要做手写数字识别,把训练资料输入teacher net,teacher产生output,输出是一个分布。给学生一样的图片,学生不是根据正确答案学习,而是把老师的输出当做正确答案,学生的输出尽量逼近老师的输出。为什么不直接训练小的network,答案跟network pruning中一样,小的network train的效果不如大的network。为什么knowledge distillation为什么有用,一个解释是teacher network会提供student network额外的资讯,这样小的network学的可能会比直接根据正确答案学要好一些。
在这里插入图片描述
假设teacher训练时看到过7这个数字,但是student训练时没有看到过7这个数字,但是光凭着teacher告诉student 1和7像,都有机会学到7什么样子。Teacher network不一定是单一的network,他可以是多个network。Ensemble:把多个模型的输出平均起来,把多个teacher network的输出做ensemble,让student network去学这个输出。使用knowledge distillation有一个小技巧,就是把softmax的函数稍微改变,在softmax上加入temperature。Softmax可以让输出变成一个介于0-1中的一个概率分布。Temperature就是在做指数运算的时候每一个数值都除一个T,T是需要调的参数,T大于1时就是让比较集中的分布变得平滑一点。为什么需要把集中的分布变得平滑一点,如果比较集中,那么就会导致经过softmax后,不集中的那几个都会接近于0,跟直接和正确答案学没有区别,好的老师会告诉那些类别相似。对老师而言加上这个temperature结果不会变,最高分还是最高分,最低的还是最低,分类结果不变,但是评分会比较平滑,这个结果给student学才有意义。
在这里插入图片描述

二、Parameter quantization

1.是否可以用更少的存储空间存一个参数,比如之前用32bit,是否16bit就足够
2.weight clustering
把network中的weights分区,把大小相近的分到一个区,相同分区的用同一个数值表示,这样在存储的时候,就只需要存储一个表格表示分区和分区对应的数值。
在这里插入图片描述
3.huffman encoding:常出现的用比较少的bit描述,比较少出现的用多的bit描述。
Binary weights
是否可以只用一个bit描述weights,比如只有正负1.一共只有两种情况,这样就可以只用一个bit描述。

三、Architecture design

1.depthwise convolution
有几个channel就有几个filter,每隔filter只管一个channel。Input跟output的channel的数量一样。不过有一个问题就是channel和channel之间没有互动,如果有些需要跨channel的pattern是没有办法解决的。
在这里插入图片描述
2.pointwise convolution
Filter的大小限制为1*1,只考虑channel之间的关系,不考虑同一个channel内部的关系。
在这里插入图片描述
比较普通的convolution和depthwise加pointwise convolution的参数差异
在这里插入图片描述
o通常是一个很大的值,所以如果采用两者相加的方法,kernel size越大,那么参数的数量就会相比于普通的越少。
在这里插入图片描述
把一般的convolution拆成两部分的时候,相当于吧一层的network拆成两层对于参数的需求就减少了。

四、Dynamic computation

希望network可以自由的调整它需要的运算量。一个可能的方法是可以让network自由调整深度。在相邻layer间添加一个额外的layer根据hidden layer的输出,决定现在分类的结果是什么。当运算资源充足时,可以跑所有的layer,当不充足时,可以决定在那个layer后输出结果。一般只关注最后一个layer的输出和真实值的差距是多少,现在也可以让真实值和每一个额外的layer的输出越接近越好,把所有两者间的距离相加得到L,让L越小越好。
在这里插入图片描述
不仅可以改变深度,也可以改变宽度。
在这里插入图片描述


总结

学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=36&spm_id_from=333.880.my_history.page.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec

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

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

相关文章

Java微服务金融项目智牛股-基础知识二(Sentinel简介)

Sentinel 背景 微服务架构设计由众多为服务组成,为保障高可用,通常会采用集群方式部署。由于服务自身原因或网络等其他问题,并不能保证100%可用性, 若单个服务出现问题, 会导致进入该服务的线程阻塞, 如果…

【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

一、冯诺依曼体系结构 现代计算机设计大都遵守冯诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器:内存&#…

cuda 安装(windows)简单

除了在linux上用,部分初学者也会在windows上用 需要在linux上安装的参考这篇:cuda linux安装 有的教程讲的很复杂,起始很简单 1.下载Cuda Toolkit(全家桶) cuda-toolkit官方页面 找到需要的版本 2.安装 双击然后下…

MySQL MHA高可用集群部署及故障切换

MySQL MHA高可用集群部署及故障切换 一、MHA概述二、MHA的组成三、MHA的特点四、MHA的原理五、搭建MySQLMHA1、所有服务器,关闭系统防火墙和安全机制2、修改 master(192.168.92.11)、Slave1(192.168.92.12)、Slave2&am…

使用Gradio创建交互式复选框组件

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Web (27号培训)

Get_POST Upload1 最后蚁剑链接寻找文件即可 简单的登录 用给好的字典爆破就好了 这仅仅只是爆破吗? 账户hacker 密码123456 1.爆破hacker帐号的密码 2.登录hacker帐号 3.抓包后将user改成vvvlllll,放包 4.即得flag

今日份分享:转换音频格式的软件有哪些

曾经有一位音乐爱好者,名叫张丽。她热爱收集高质量的音乐,尤其钟爱flac这种无损音频格式。然而,有一天,她遇到了一个问题:她的音乐播放器不支持flac格式,因此她迫切需要找到一种软件来转换flac音频格式。那…

助你丝滑过度到 Vue3 初识 ②②

作者 : SYFStrive 博客首页 : HomePage 📜: VUE3~TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 👉…

读发布!设计与部署稳定的分布式系统(第2版)笔记15_快速失败和替换

1. 快速失败而非缓慢响应 1.1. 如果响应缓慢比没有响应更糟,那么最坏的情况肯定是缓慢的失败响应 1.2. 如果系统能够预先确定某次调用会失败,那么最好快速失败 2. 快速失败模式通过避免响应缓慢来提高整个系统的稳定性 2.1. 当系统由于部分失效而面临…

【pytorch,onnx,bug解决】pytorch的op:pixel unshuffle转到onnx的op:SpaceToDepth

文章目录 问题1, 转换失败问题1解决问题2,精度对不上问题2解决训练时转换时 问题1, 转换失败 pytorch训练好的模型想要在onnx上部署,但是发现算子F.pixel_unshuffle 不能直接转到onnx 的 SpaceToDepth, 发生以下报错&…

Android——基本控件(下)(十六)

1. 随笔提示文本:AutoCompleteTextView 1.1 知识点 (1)了解随笔提示功能的应用; (2)可以使用AutoCompleteTextView类完成随笔提示功能的实现。 1.2 具体内容 这个组件就是提供了一个文本输入的功能&…

YOLO改进教程:6.添加NAM-Net注意力机制

论文地址:https://arxiv.org/abs/2111.12419Github:https://github.com/Christian-lyc/NAM如果你是深度学习小白,阅读本文前建议先学习一下 📖《新手入门深度学习》如果你有一定基础,但是缺乏实战经验,可通过 📖《深度学习100例》 补齐基础另外,我们正在通过 🔥365…

window11系统打开VMware虚拟机,导致主机直接重启

问题描述: window11系统打开VMware虚拟机,直接导致主机直接重启 原因: 未开启“虚拟机平台”选项。 解决方式: 打开电脑“控制面板”,选择“程序”,在再选择程序中的“启用或关闭windows功能” 控制面板➡…

MyBatis 执行流程详解及示例代码

导言: MyBatis 是一个优秀的持久层框架,它简化了数据库操作的开发过程。本文将详细介绍 MyBatis 的执行流程,并提供相应的示例代码,帮助读者更好地理解和应用 MyBatis。 1. 创建 SqlSessionFactoryBuilder 对象 在 MyBatis 中&…

基于redis的bitmap实现签到功能(后端)

项目环境 MacOS springboot: 2.7.12 JDK 11 maven 3.8.6 redis 7.0.11 StringRedisTemplate 的key和value默认都是String类型 可以避免不用写配置类,定义key和value的序列化。 实现逻辑: 获取用户登录信息 根据日期获取当天是多少号 构建…

【服务器数据恢复】热备盘同步失败导致服务器崩溃的数据恢复案例

服务器数据恢复环境: 两组分别由4块SAS硬盘组建的raid5磁盘阵列,ext3文件系统,通过LVM管理磁盘存储。 服务器故障: 一组raid5磁盘阵列中的1块硬盘故障离线,热备盘成功启用并开始同步数据,在同步还没有完成…

互联网保险驶入发展快车道,元保保险加速数字化突围

随着90后、00后这一群体逐渐进入婚育高峰期,加之相较60后、70后群体,这群互联网原住民已经成为保险消费的主力人群,互联网保险行业迎来了新的发展机遇,互联网平台恰似曾经辉煌的大卖场、集市、商场,成为汇聚流量的新平台,只不过,能量的漩涡更大,更聚焦。对此,元保集团创始人兼C…

记录一个Masonry 添加约束导致的label 文案展示不全的问题

问题如图,蓝色label 中的文字没有展示完全,后面还有“情。” 原因,我们使用masonry 布局的时候,宽度会有细微的误差,导致我们实际 添加的约束比我们期望的要小,就导致横向无法容下期望的文字宽度&#xf…

如何使用MySQL统计当月每日收益金额

如果要实现上图这个效果,这个SQL应该怎么写呢? 目录 1、实现思路 2、SQL实现 1、实现思路 首先,我们先实现查询当月每日的日期 。然后将查询结果与需要统计的表进行左连接即可。 SELECT DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRE…

微服务springcloud 10.config配置中心框架和rabbitmq的安装

config配置中心的作用:项目的yml 配置文件保存到 git 服务器,例如 github.com 或 gitee.com 微服务启动时,从服务器获取配置文件 1.新建 “Project”,命名为 config。注意这里的不是maven项目,而是project 2.将sp02,sp03,sp04,s…