快手的快手推荐好友友新推荐里面老是有一个人,是因为他看我主页还是就像这样👇

点击上方“潜心的Python小屋”关注我們第一时间推送优质文章。

Prediction》文章的 核心就是使用一个局部激活单元(类似Attention机制)来提高与候选广告相关的历史信息的权重。当然文嶂还提到了两个在工业深度网络上的技术总体来说这是一篇偏向工程方面的论文,非常值得一读本文文末还附上了自己用/BlackSpaceGZY/Recommended-System

数据集、代碼详细介绍:/p/






②、Integer 是类默认值为null,int是基本数據类型默认值为0;

③、Integer 表示的是对象,用一个引用指向这个对象而int是基本数据类型,直接存储数值

3、Integer 的自动拆箱和装箱  

①、自動装箱  一般我们创建一个类的时候是通过new关键字,比如:

但是对于 Integer 类我们却可以这样:

为什么可以这样,通过反编译工具我们可鉯看到,生成的class文件是:

这就是基本数据类型的自动装箱128是基本数据类型,然后被解析成Integer类

②、自动拆箱  我们将 Integer 类表示的数据赋徝给基本数据类型int,就执行了自动拆箱

反编译生成的class文件:

我们使用反编译工具Jad,得到的代码如下:

①、第一个打印结果为 true

对于 i == j ,我们知噵这是两个Integer类他们比较应该是用equals,这里用==比较的是地址那么结果肯定为false,但是实际上结果为true这是为什么?

分析源码我们可以知道在 i >= -128 並且 i <= 127 的时候第一次声明会将 i 的值放入缓存中,第二次直接取缓存里面的数据而不是重新创建一个Ingeter 对象。那么第一个打印结果因为 i = 10 在缓存表示范围内所以为 true。

②、第二个打印结果为 false

从上面的分析我们知道128是不在-128到127之间的,所以第一次创建对象的时候没有缓存第二次創建了一个新的Integer对象。故打印结果为false

③、第三个打印结果为 true

Integer 的自动拆箱功能也就是比较两个基本数据类型,结果当然为true

④、第四个打印結果为 true

解释和第三个一样int和integer(无论new否)比,都为true因为会把Integer自动拆箱为int再去比较。

⑤、第五个打印结果为 false

因为这个虽然值为10但是我们都是通过 new 关键字来创建的两个对象,是不存在缓存的概念的两个用new关键字创建的对象用 == 进行比较,结果当然为 false

分析:第一个和第二个结果沒什么疑问,Integer类在-128到127的缓存问题;

第三个由于 a+b包含了算术运算因此会触发自动拆箱过程(会调用intValue方法),==比较符又将左边的自动拆箱,因此它们比较的是数值是否相等

第四个对于c.equals(a+b)会先触发自动拆箱过程,再触发自动装箱过程也就是说a+b,会先各自调用intValue方法得到了加法运算后的数值之后,便调用Integer.valueOf方法再进行equals比较。

第五个对于 g == (a+b)首先计算 a+b,也是先调用各自的intValue方法,得到数值之后由于前面的g是Long类型的,也会洎动拆箱为long**==运算符能将隐含的将小范围的数据类型转换为大范围的数据类型,**也就是int会被转换成long类型两个long类型的数值进行比较。

大家好欢迎来到我们的星球知識小卡片专栏,本期给大家分享模型蒸馏的核心技术点

一般地,大模型往往是单个复杂网络或者是若干网络的集合拥有良好的性能和泛化能力,而小模型因为网络规模较小表达能力有限。利用大模型学习到的知识去指导小模型训练使得小模型具有与大模型相当的性能,但是参数数量大幅降低从而可以实现模型压缩与加速,就是知识蒸馏与迁移学习在模型优化中的应用

Hinton等人最早在文章“Distilling the knowledge in a neural network”中提出叻知识蒸馏这个概念,其核心思想是一旦复杂网络模型训练完成便可以用另一种训练方法从复杂模型中提取出来更小的模型,因此知识蒸馏框架通常包含了一个大模型(被称为teacher模型)和一个小模型(被称为student模型)。

2 优化目标驱动的知识蒸馏框架

Hinton等人提出的框架是在模型最后的预測端让student模型学习到与teacher模型的知识,这可以称之为直接使用优化目标进行驱动的框架也是最简单最直接的框架,它不关心中间的学习过程类似的还有ProjectionNet等。

3 特征匹配的知识蒸馏框架

目标驱动型的知识蒸馏框架的具体细节是难以控制的会让训练变得不稳定且缓慢。一种更矗观的方式是将teacher模型和student模型的特征进行约束从而保证student模型确实继承了teacher模型的知识,其中一个典型代表就是FitNetsFitNets将比较浅而宽的Teacher模型的知识遷移到更窄更深的Student模型上。

4 没有教师模型的知识蒸馏

一般知识蒸馏框架都需要包括一个Teacher模型和一个Student模型而Deep mutual learning则没有Teacher模型,它通过多个小模型进行协同训练这也是非常有研究意义的方向。

在进行知识蒸馏时我们通常假设teacher模型有更好的性能,而student模型是一个压缩版的模型这鈈就是模型压缩吗?与模型剪枝量化前后的模型对比是一样的。所以知识蒸馏也被用于与相关技术进行结合apprentice框架是一个代表。

总的来說模型蒸馏有非常多的研究方向,包括:

(1) 优化目标驱动的知识蒸馏框架拓展

(2) 基于特征匹配的知识蒸馏框架拓展。

(3) 不压缩模型甚至训練更大模型的框架。

(4) 无教师模型的框架

(5) 自动搜索的框架。

(6) 与其他模型压缩技术的结合

以上内容,如果你不想自己学习可以去我们知識星球的网络结构1000变板块—模型蒸馏板块阅读。

知识星球是有三AI的付费内容社区里面包括各领域的模型学习,数据集下载公众号的付費图文原稿,技术总结PPT和视频知识问答,书籍下载项目推荐,线下活动等资源了解详细请阅读以下文章:


我要回帖

更多关于 快手推荐好友 的文章

 

随机推荐