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

文章目录

  • 前言
  • 一、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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3:计算属性、监听器

computed 计算属性 计算属性是指 基于现有状态派生 (演变) 出新的状态,现有状态发生变化,派生状态重新计算。 computed 接收回调函数作为参数,基于回调函数中使用的响应式数据进行计算属性的创建,回调函数的返回值就是基于现有状态…

壳牌小程序笔记

壳牌加油站 uni-app-基础-day01 概览 为什么要学uni-app? 现在很多中小型公司,都有自己的小程序项目,然后开发小程序就会用到uni-app。 uni-app没有诞生之前,怎么写小程序 使用原生微信小程序这个框架去开发? 只…

解析vcruntime140.dll文件,缺失了要怎么去修复?

在计算机的世界中,vcruntime140.dll是一个重要的动态链接库文件。然而,有时候这个文件可能会引发一系列问题,影响应用程序的正常运行。如果你缺少了vcruntime140.dll,那么你的程序就会打不开,今天我们一起来聊聊vcrunt…

鸟类识别Python,基于TensorFlow卷积神经网络【实战项目】

一、介绍 鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,…

Linux Ubuntu man文档的图文安装教程

文章目录 前言man文档的起源man文档的安装man文档的使用总结 前言 当提及"man文档"时,通常是指Unix和类Unix系统中的手册页(man page),因为Linux是在Unix的基础上发展而来的操作系统,所以我们的Linux也有ma…

IIS安装localhost显示下载,urlrewrite设置

1.取消ftp服务勾选 2. ping localhost ping 127.0.0.1 如果显示 ::1 则需要禁用ipv6 在注册表 找到并单击下面的注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ 双击“DisabledComponents”以修…

【机器学习】sklearn数据集的使用,数据集的获取和划分

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 sklearn数据集 二、安装sklearn二、获取数据集三、…

从电源 LED 读取智能手机的秘密?

研究人员设计了一种新的攻击方法,通过记录读卡器或智能手机打开时的电源 LED,使用 iPhone 摄像头或商业监控系统恢复存储在智能卡和智能手机中的加密密钥。 众所周知,这是一种侧信道攻击。 通过密切监视功耗、声音、电磁辐射或执行操作所需…

STC单片机存储器介绍和使用

STC单片机存储器介绍和使用 🌿STC15F2K60S2系列内部结构框图 🌿STC12C5A60S2系列内部结构框图 📑程序存储器(ROM/Flash) 🔖STC单片机ROM容量大小可以根据其型号和命名规则了解到。 🌿STC15

WiSA Technologies开始接受WiSA E多声道音频开发套件的预订

美国俄勒冈州比弗顿市 — 2023年6月13日 — 为智能设备和下一代家庭娱乐系统提供沉浸式无线声效技术的领先供应商WiSA Technologies股份有限公司(NASDAQ股票代码:WISA)宣布:该公司现在正在接受其WiSA E开发套件的预订。WiSA E使用…

【深度学习】6-1 卷积神经网络 - 卷积层

卷积神经网络(Convolutional Neural Network,CNN)。 CNN 被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础。 首先,来看一下 CNN 的网络结构,了解 CNN 的大致框架。CNN…

macOS编译开源全景拼接库OpenPano

1. 准备工具 clang与cmake 如果要处理png文件要下载安装libjpeg 安装相当依赖: brew install gnu-sed brew install libjpeg brew install eigen brew install libomp2.克隆源码 git clone --recursive https://github.com/ppwwyyxx/OpenPano.git 3.编译 mkdir build cd …

力扣 404. 左叶子之和

题目来源:https://leetcode.cn/problems/sum-of-left-leaves/description/ C题解1:递归法,前序遍历。 1. 确定输入参数:当前节点,左叶子的和; 2. 确定终止条件:空节点时返回; 3. …

Java的Stream流详细讲解

一.Stream 是什么 Stream是Java 8新增的重要特性, 它提供函数式编程支持并允许以管道方式操作集合. 流操作会遍历数据源, 使用管道式操作处理数据后生成结果集合, 这个过程通常不会对数据源造成影响。 ​ 同时stream不是一种数据结构,它只是某种数据源的一个视图&…

用Python写了一个下载网站所有内容的软件,可见即可下

目录标题 前言效果展示环境介绍:代码实战获取数据获取视频采集弹幕采集评论 GUI部分尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 今天我们分享一个用Python写下载视频弹幕评论的代码。 顺便把这些写成GUI,把这些功能放到一起让朋友用起来更方便~ 效果…

Debezium系列之:深入理解tinyint(n)

Debezium系列之:深入理解tinyint 一、背景二、相关技术博客三、查看表的ddl四、深入理解tinyint(n)五、创建表六、插入数据七、查看topic数据八、总结一、背景 数据库修改了字段类型为tinyint,希望采集的时候能够转化为boolean类型,数据库字段类型如下图所示: 在设置了conv…

new Vue后整个的流程

文章目录 new Vue后整个的流程Vue.js 创建应用程序流程概述使用 new Vue() 创建Vue 实例流程概述 new Vue后整个的流程 new Vue({el: #app,render: h > h(App),data() {return {message: hello vue}} }).$mount(#app)Vue.js 创建应用程序流程概述 在使用 Vue.js 创建一个应…

8.OpenCV-识别身份证号码(Python)

需求描述: 通过OpenCV识别身份证照片上的身份证号码(仅识别身份证号码) 实现思路: 1.将身份证号中的0,1,2,3,4,5,6,7,8,9作为模板,与身份证照片中的身份证号码区域进行模板匹配。 2.先要制作一个身份证号码模板&am…

RabbitMQ Exchange类型和工作模式介绍

RabbitMQ Exchange类型和工作模式介绍 一RabbitMQ Exchange类型1.1.Fanout1.2.Direct1.3.Topic1.4.Headers 二 RabbitMQ 工作模式介绍2.1.work工作模式(资源的竞争)2.2.publish/subscribe发布订阅(共享资源)2.3.routing路由模式应用--direct交换器 2.4.topic 主题模式(路由模式…

CSDN个性化推荐系统-负反馈测试

文章目录 前言一、uc不感兴趣标签过滤测试1.uc不感兴趣标签获取(uc_unlike_tag_list)1.1个人中心界面1.2从标签中可以发现什么?1.3与研发确认点1.4设计开发1.5接口获取结果 2.推荐流文章标签获取(tag_list)2.1部分代码2.2基本标签校验2.3基本标签校验结果 3.推荐流u…