gap

浅谈Class Activation Mapping(CAM)

三世轮回 提交于 2020-01-08 22:18:52
原文地址: https://www.cnblogs.com/luofeel/p/10400954.html 第一次接触Class Activation Mapping这个概念是在论文《Learning Deep Features for Discriminative Localization 》(2016CVPR)中。 简单来说,这篇文章主要介绍了两个核心技术: GAP(Global Average Pooling Layer) 和 CAM(Class Activation Mapping) GAP(全局平均池化层) 在说全局平均池化之前,我想先谈一谈池化层。我们都知道,池化层的作用是正则化。比如说,这是一个VGG-16的模型。 我们可以直观的看到,从卷积层到池化层,深度不变,尺寸变小了。我们使用更小尺寸的特征图来表示输入,虽然会丢失一些信息,但是池化层可以防止过拟合,降低维度,保留主要特征的同时减少计算量,减少了参数数量。 全局平均池化也一样,可以用来正则化。让我们来看一个容易的例子,我想这个相信可以帮助我们理解全局平均池化。 首先是Max pooling(最大池化)。如图所示,最大池化是选择每个子区域的最大值,然后使用子区域的最大值表示该子区域。 Average pooling(平均池化)是指计算出子区域的平均值,用一个平均值来分别表示子区域子区域。 与平均池化类似

几种常见的排序算法分析学习

ε祈祈猫儿з 提交于 2020-01-03 05:11:50
目录 (?) [-] 冒泡排序 选择排序 1 直接插入排序 1 二分查找插入排序 希尔入排序 快速排序 归并排序 总结 本篇博客知识点 分别描述了 冒泡,选择,直接插入,二分插入,希尔,快速以及归并排序。同时还有Java实现代码,算法分析和示意图 冒泡排序 算法描述 设待排序记录序列中的记录个数为n 一般地,第i趟起泡排序从1到n-i+1 依次比较相邻两个记录的关键字,如果发生逆序,则交换之。 其结果是这n-i+1个记录中,关键字最大的记录被交换到第n-i+1的位置上,最多作n-1趟。 算法实例 经过五趟可以将 21 25 49 25 16 08 排为由小到大的升序 其中,里面的每一趟的排序示意如下,以第一天49如何配到最后为例 每一趟的结果都是把未排序的最大的那个数字排到最后。 算法代码实现—Java代码实现 工具方法,交换数组中的两个位置 private static void swap(int[] num, int i, int j) { int temp = num[i]; num[i] = num[j]; num[j] = temp; } //优化版---冒泡排序 public void sort2(int [] num){ for(int i=0;i<num.length;i++){ boolean isOK = true; for(int j=0;j<num

常见排序算法

旧巷老猫 提交于 2020-01-03 05:04:42
索引 1. 插入排序 1.1 直接插入 1.2 折半插入 1.3 希尔排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择排序 3.1 直接选择 3.2 堆排序 4. 归并排序 4.1 迭代归并 总结 1. 插入排序 思想 :每步将一个待排序的对象, 按其排序码大小, 插入到前面已经排好序的一组对象的适当位置上, 直到对象全部插入为止。 1.1 直接插入 1.1.1 方法: 当插入第i (i >= 1) 个对象时, 前面的V[0], V[1], …, V[i-1]已经排好序。这时, 用V[i]的排序码依次与V[i-1], V[i-2], …的排序码顺序进行比较, 找到插入位置即将V[i]插入, 原来位置上的对象向后顺移。 具体过程: 1. 把n个待排序的元素看成为一个“有序表”和一个“无序表”; 2. 开始时“有序表”中只包含1个元素,“无序表”中包含有n-1个元素; 3. 排序过程中每次从“无序表”中取出第一个元素,依次与“有序表”元素的关键字进行比较,将该元素插入到“有序表”中的适当位置,有序表个数增加1,直到“有序表”包括所有元素。 1.1.2 实例图: 1.1.3 代码: /** * 直接插入排序:将数组从小到大排序 */ #include <iostream> using namespace std; typedef int Index;//下标的别名

JavaScript 十种基本算法

一世执手 提交于 2020-01-03 05:02:10
  在传统的计算机算法和数据结构领域,大多数专业教材和书籍的默认语言都是Java或者C/C+ +。当我了解到有一本叫做《数据结构与算法JavaScript描述》时,觉得它是一本很好的针对前端开发者们的入门算法书籍。有一个问题是,很多重要的算法和数据结构知识并没有在这本书里被提到。这些问题对于作为一个晚期强迫症患者的我来说简直不能忍。于是乎,一言不合我就决定自己找资料总结算法。那么,我就从算法领域里最基础的知识点——排序算法总结起好了。 十大经典算法概括图 名词解释:   n:数据规模   k:“桶”的个数   In-place:占用常数内存,不占用额外内存   Out-place:占用额外内存   稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 ① 冒泡排序   作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样, 每次都在第一页第一位 ,所以最熟悉。冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。 演示图   JavaScript代码实现  function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j

数据结构:希尔排序

夙愿已清 提交于 2020-01-01 21:15:47
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后,对各组内的元素进行直接插入排序。 这一趟排序完成之后,每一个组的元素都是有序的。然后减小gap的值,并重复执行上述的分组和排序。重复这样的操作,当gap=1时,整个数列就是有序的。 1 void shell_sort1(int a[], int n) 2 { 3 int i,j,gap; 4 // gap为步长,每次减为原来的一半。 5 for (gap = n / 2; gap > 0; gap /= 2) 6 { 7 // 共gap个组,对每一组都执行直接插入排序 8 for (i = 0 ;i < gap; i++) 9 { 10 for (j = i + gap; j < n; j += gap) 11 { 12 // 如果a[j] < a[j-gap],则寻找a[j]位置,并将后面数据的位置都后移。 13 if (a[j] < a[j - gap]) 14 { 15 int tmp = a[j]; 16 int k = j -

mysql死锁学习第一篇

╄→гoц情女王★ 提交于 2019-12-24 00:39:13
文章目录 前言 日志 划重点 insert导致死锁原因排查 gap锁在insert里面起到作用 前言 技术群早上有个兄台发了一个死锁的日志,我瞄了一眼,发现插入也会死锁,好奇让人变得更强大。 日志 看下那位老哥的日志 ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2019-12-20 04:00:03 0x7f78e455e700 *** (1) TRANSACTION: TRANSACTION 3460338, ACTIVE 0 sec inserting mysql tables in use 1, locked 1 LOCK WAIT 3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1 MySQL thread id 2011281, OS thread handle 140156593497856, query id 29253160 10.105.232.16 DBopr update insert into TABLE_NAME ( IS_DELETED, CREATOR, MODIFIER, GMT_MODIFIED, GMT_CREATE, POLICY_NO, INS

mysql的mvcc 和next-lock

て烟熏妆下的殇ゞ 提交于 2019-12-16 04:24:09
mysql在rr隔离级别下,是如何解决幻读的? mysql通过mvcc 及加上next-key lock来解决幻读发生的。 很多资料写的是rr隔离级别下是无法避免幻读的,的确是,理论上的rr是无法避免幻读的,但是mysql的innodb引擎通过next-key解决了幻读问题 (select 可以使用for update /lock in share mode来解决幻读)。 mvcc原理 数据行有另外两列,一个是create-version,delete-version,数据创建的时候初始化create-version,被delete及update时,设置其delete-version,值都是当前事务ID 比如我插入一条记录, 事务id 假设是1 ,那么记录如下:也就是说,创建版本号就是事务版本号。 如果我更新的话,事务id假设是2 如果我删除的话,假设事务是id=3 要注意,必须是commit的时候才会修改create-version delete-version字段,在没有提交的情况是,是不会修改和创建的。 这样保证了在 a b 两个事务情况下,假设 a(transationid=1) b(transactionid=2) 由于事务a早于事务b 约束: 1.事务只能读取到delete-version为空,或者delete版本号小于当前事务的数据行 2.事务只能读取到create

希尔排序(python 实现)

拈花ヽ惹草 提交于 2019-12-12 05:40:37
""" 希尔排序 gap = 子序列之间的间距 """ def shell_sort(sort_list): n = len(sort_list) # 初始排序的gap gap = n // 2 while gap > 0: for i in range(gap, n): j = i # 根据gap来进行比较,比较完后,下标减一,继续比较,直到比较到序列头。 while j >= gap and sort_list[j-gap] > sort_list[j]: sort_list[j - gap], sort_list[j] = sort_list[j], sort_list[j-gap] j -= gap gap = gap // 2 来源: https://www.cnblogs.com/sometingintheway/p/12026812.html

js 排序算法

安稳与你 提交于 2019-12-10 18:17:21
1 冒泡排序 最简单的排序算法之一 function sorting(arr){ //冒泡排序 let len = arr.length,temp= 0; for(let i = 0; i < len -1; i++){ for (let j = i+1; j < len-1; j++){ if(arr[i] > arr[j]){ temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; }, 2 选择排序 首页从未排序序列中找到最大值或最小值,放到已排序序列的末尾或开头,重复上述步骤,直到所有元素排序完毕 function sorting(arr){ let len = arr.length,temp = 0; let minIndex = 0; for (let i = 0; i < len -1; i++){ minIndex = i; for (let j = i+1 ; j < len; j++){ if(arr[i] > arr[j]){ minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; }, 3 插入排序 通过构建有序序列,对于末排序数据

NORDIC BLE MAC ADDR

China☆狼群 提交于 2019-12-09 12:50:11
一个ble设备,地址可以分成2大类 Public Device Address(公共设备地址) 公共设备地址 Public Device Address是48bits的数字,就和电脑mac地址一样,是全球唯一的,一般传统蓝牙用这种地址。 Random Device Address(随机设备地址) 不是固定分配,而是设备启动后随机分配,Random Device Address(随机设备地址)又可以分成2类 Static Device Address( 静态设备地址) 最高2bits为“11”, 剩余46bits是随机数,不能全0或全1 在一个上电周期保持不变 下一次上电可以变也可以不变 Private Device Address(私密设备地址) 分为2类 Non-resolvable private address(不可解析私密地址) 最高2bits为“00” 剩余46bits是随机数,不能全0或全1 每隔T_GAP周期更新 Resolvable private address(不可解析私密地址) 高24bits是随机数,最高2bits为“10” 低24bits是随机数和IRK进过hash运算得到hash值,hash=ah(IRK,prand) 对端BLE扫描到该类型地址后,用本地IRK和该地址的prand进行ah运算,如果得到值和该类型地址低24bits一致才进行后续操作。