Enplee's blog
0%

问题:实现T1,T2两个线程交替打印A1B2C3……

交替打印的实现,依赖于线程之间的有序阻塞和唤醒。可以用到的有:Synchronized的wait&notify,LockSupport的park&unpark,reentrenlock的condition以及CAS。

解法一:使用wait&notify

Read more »

算法笔记之位运算

Brian Kernighan 算法

内容:通过n&(n-1), 清除二进制n的最右边1

原理:n-1就是找到n最右边的1然后变为0,借1,同时最右边1的右边一定全是0,那么&操作之后,最右边的1变为0.

应用:Bk算法可用来求两个数的二进制公共前缀。

Read more »

Abstract

以前的工作使用“较小范数不太重要”的标准来修剪卷积神经网络中具有较小范数值的滤波器。本文分析了这种基于范数的准则,指出其有效性取决于两个不总是满足的要求:(1)滤波器的范数偏差应该很大;(2)滤波器的最小范数应该很小。为了解决这个问题,我们提出了一种新的滤波剪枝方法,即基于几何中值(FPGM)的滤波剪枝,来压缩模型而不考虑这两个要求。与以前的方法不同,FPGM通过修剪冗余过滤器来压缩CNN模型,而不是那些“相对不太重要”的过滤器。当应用于两个图像分类基准时,我们的方法验证了它的有用性和优势。值得注意的是,在CIF AR-10上,FPGM在ResNet-110上减少了52%以上的浮点运算,相对精度提高了2.69%。此外,在ILSVRC2012上,FPGM在ResNet101上减少了超过42%的浮点运算,而没有前5名的精度下降,这提高了最先进的水平。

GitHub:
https://github.com/he-y/filter-pruning-geometric-median

Read more »

Abstract

滤波器修剪(filter prune)在神经网络的压缩和加速中得到了广泛的应用。现有的方法通常利用预定义的修剪标准,例如ℓp-norm(范数),修剪不重要的filter。这些方法有两个主要的限制。首先,流行的方法没有考虑不同层次的filter分布的多样性。为了将粗级特征提取到细级特征,不同层的滤波器具有不同的分布。因此,对不同的功能层使用相同的修剪标准是不合适的。其次,主流的逐层剪枝方法独立、顺序地处理每一层,没有考虑到网络中的所有层协同做出最终预测。在本文中,我们提出了学习filter剪枝准则(LFPC)来解决上述问题。具体地说,我们开发了一个可微的剪枝标准采样器。该采样器是可学习的,并通过采样准则得到的剪枝网络的验证损失来优化。通过这种方式,我们可以为不同的功能层自适应地选择合适的剪枝标准。此外,LFPC在评价采样准则时,同时综合考虑了各层的贡献。在三种图像分类基准上的实验验证了我们的方法。

Read more »

Abstract

本文提出了一种新的学习范式,即滤波器嫁接,旨在提高深度神经网络的表示能力。动机是DNNs具有不重要的(无效的)过滤器(例如,l1norm接近于0)。这些过滤器限制了DNNs的潜力,因为它们被认为对网络的影响很小。当过滤剪枝删除这些无效过滤器的效率考虑,过滤嫁接重新激活他们从准确性提高的观点。通过将外部信息(权重)嫁接到无效的过滤器中来处理激活。为了更好地执行嫁接过程,我们开发了一个基于熵的标准来衡量过滤器的信息,以及一个自适应加权策略来平衡网络间的嫁接信息。接枝操作后,与未接触状态相比,网络的无效滤波器非常少,使模型具有更大的表示能力。我们还对分类和识别任务进行了大量的实验,以证明我们的方法的优越性。例如,在CIFAR-100数据集上,嫁接的MobileNetV2比未嫁接的MobileNetV2性能好约7%。

https://github.com/fxmeng/filter-grafting.git.

Read more »

Abstract

神经网络剪枝为深度神经网络在资源受限设备上的应用提供了广阔的前景。然而,现有的剪枝方法由于缺乏对非显著网络成分的理论指导,在剪枝设计中存在训练效率低、人工成本高的问题。本文通过对高秩特征图的研究,提出了一种新的滤波剪枝方法。我们的HRank的灵感来自于这样一个发现,即由单个过滤器生成的多个特征图的平均秩总是相同的,而不考虑接收到的CNNs图像batch的数量。在此基础上,本文提出了一种用数学方法对低秩特征图进行滤波的方法。我们的剪枝背后的原则是,低秩特征图包含的信息较少,因此剪枝的结果可以很容易地复制。此外,我们还通过实验证明了高秩特征图的权值包含了更多的重要信息,即使不更新一部分,对模型性能的影响也很小。在不引入任何额外约束的情况下,HRank在计算和参数减少方面比现有技术有了显著的改进,并且具有相似的准确性。

https://github.com/lmbxmu/HRank

Read more »

算法笔记之二分法解决极小化极大

问题引入:

1
2
3
4
5
6
7
8
Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。
已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y| 。
给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。
n == position.length
2 <= n <= 10^5
1 <= position[i] <= 10^9
所有 position 中的整数 互不相同 。
2 <= m <= position.length
Read more »

算法笔记之Manacher算法

问题引入

1
2
3
4
问题描述:最长回文子串问题
给定一个字符串,求它的最长回文子串长度。
示例:
s = abbabbac 最长回文子串为:abbabba
Read more »