算法

论文笔记系列--Progressive Differentiable Architecture Search:Bridging the Depth Gap between Search and Evaluation

廉价感情. 提交于 2020-01-23 19:31:54
为方便说明,如无特殊说明后文将PDARTS来指代该篇论文。阅读本文之前需要对DARTS有一定了解。,如果还不太清楚DARTS可以阅读 这篇文章 。 Motivation 进来有很多种NAS技术相继提出,主要有基于强化学习的,基于进化算法的,还有基于梯度下降的,不同算法有不同优缺点。本文的PDARTS就是基于梯度下降的,其实看名字也能知道它其实是对DARTS的改进算法。 DARTS算法是先在proxy dataset(如CIFAR10)上搜索cell结构,之后通过重复堆叠找到的这个cell得到最终的网络结构。直白一点就是在CIFAR10数据集上搜索一个深度为8的网络,而在ImageNet上就通过堆叠得到一个深度为20的网络,然后对这个更深的网络训练。 上述这一过程有一个很明显的缺点就是DARTS在proxy dataset上搜到的结构可能在target dataset上不是最好的,甚至表现较差。文中把这个叫做 depth gap 。 为了解决前面提到的 depth gap 问题,PDARTS提出了一种 渐进式搜索 的方法。 和其他基于DARTS算法的区别 PNAS :PNAS是针对cell内部的operation做渐进式搜索,而PDARTS是对layer和cell中的operation做渐进式搜索 SNAS :SNAS是为了解决训练和验证之间的bias

算法 希尔排序

别说谁变了你拦得住时间么 提交于 2020-01-23 18:30:08
希尔排序 思想:图解 代码: public static void shellSort(int[] a){ int n = a.length; for(int h = n/ 2; h > 0; h /= 2){ for(int i = h; i < n; i++){ for(int j = i; j >= h ; j -= h){ if(a[j] < a[j - h]){ int temp = a[j]; a[j] = a[j-h]; a[j-h] = temp; } } } } } ***帅气的远远啊*** 来源: CSDN 作者: yuanyuan啊 链接: https://blog.csdn.net/qq_41585840/article/details/104076589

程序员必须掌握的核心算法有哪些?

故事扮演 提交于 2020-01-23 18:21:36
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。 一、算法最最基础 1、时间复杂度 2、空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等,直接通过博客搜索学习即可。 文章推荐: 算法分析神器—时间复杂度 二、基础数据结构 1、线性表 列表(必学) 链表(必学) 跳跃表(知道原理,应用,最后自己实现一遍) 并查集(建议结合刷题学习) 不用说,链表、列表必须,不过重点是链表。 三分钟基础数据结构:如何轻松手写链表? 以后有面试官问你「跳跃表」,你就把这篇文章扔给他 2、栈与队列 栈(必学) 队列(必学) 优先队列、堆(必学) 多级反馈队列(原理与应用) 特别是优先队列,再刷题的时候,还是经常用到的,队列与栈,是最基本的数据结构,必学。可以通过博客来学习。相关文章: 三分钟基础知识:什么是栈?

必知之C++算法之七大排序算法相关万字究极集合

点点圈 提交于 2020-01-23 18:15:32
排序算法简介 排序的概念 概念 排序是计算机内经常进行的一种操作,其目的是将一组无序的数据元素调整为有序的数据元素的过程。 操作 比较 :任意两个数据元素通过比较操作确定先后次序。 //比较数组中两个数据 if ( arr [ i ] > arr [ j ] ) //arr[i]大于arr[j] else //arr[i]小于arr[j] 交换 :数据元素之间需要交换才能得到预期结果。 //数据交换函数 void swap ( int * a , int * b ) { int tmp = * a ; * a = * b ; * b = tmp ; } 数据量分析 内部排序: 若整个排序过程不需要访问外存,仅在内存中完成数据的调整,则称此类排序问题为内部排序。 外部排序: 若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。 稳定性分析 前提 :一组数据中出现多个相同的数据 //一组数据中出现多个相同的数据 int arr [ ] = { 9 , 1 , 5 , 6 , 4 , 10 , 5 , 8 , 7 , 3 } ; 若在原始记录序列中, ai 和 aj 的关键字相同, ai 出现在 aj 之前,经过某种方法排序后,ai的位置仍在 aj之前,则称这种排序方法是稳定的; 反之,若经过该方法排序后, ai的位置在 aj 之后

无线传感器网络中的节点定位技术

徘徊边缘 提交于 2020-01-23 16:33:17
                    无线传感器网络中的节点定位技术   无线传感器网络的许多应用要求节点知道自身的位置信息,才能向用户提供有用的检测服务。没有节点位置信息的监测数据在很多场合下是没有意义的。比如,对于森林火灾检测、天然气管道监测等应用,当有事件发生时,人们关心的一个首要问题就是事件发生在哪里,此时如果只知道发生了火灾却不知道火灾具体的发生地点,这种监测没有任何实质的意义,因此节点的位置信息对于很多场合是至关重要的。   在许多场合下,传感器节点被随机部署在某个区域,节点事先无法知道自身的位置,因此需要在部署后通过定位技术来获取自身的位置信息。目前最常见的定位技术就是GPS(Global Positioning System)了,它能够通过卫星对节点进行定位,并且能够达到比较高的精度。因此要想对传感器节点进行定位,最容易想到的方法就是给每个节点配备一个GPS接收器,但是这种方法不适用于传感器网络,主要原因有以下几点:   1)GPS接收器通常能耗高,而对于无线传感器网络中的节点来说,一般能耗很有限,给每个节点配备一个GPS接收器会大大缩短网络寿命;   2)GPS接收器成本比较高,给无线传感器网络中的每个节点配备一个GPS接收器,需要投入很大成本,尤其对于大规模的无线传感器网络来说不是很适合;   因此有必要研究适合无线传感器网络的定位技术

必知C++算法之栈和队列基本操作

本秂侑毒 提交于 2020-01-23 15:10:05
栈 1.push 2.pop 3.top 4.size 注意:遍历打印栈空间时不要用for循环size(),因为栈的size()时在改变的,输出会少很多数据 cout << "s.size()=" << s.size() << endl; for(int i = 0; i < s.size(); ++i) { cout << s.size() << endl; cout << s.top() << " "; s.pop(); } 用while+empty()即可: while (!s.empty()) { cout << s.top() << " "; s.pop(); } 栈的一些操作: //获取栈底元素 int getBottomNum(stack<int>& stack) { if (stack.empty()) return -1; int res = stack.top(); stack.pop(); if (stack.empty()) { return res; } else { int last = getBottomNum(stack); stack.push(res); return last; } } void test01() { //移除栈底元素 stack<int> stack; for (int i = 2; i < 10; ++i) { stack

LeetCode算法题-Jewels and Stones(Java实现)

醉酒当歌 提交于 2020-01-23 14:31:15
这是悦乐书的第 313 次更新,第 334 篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771)。字符串J代表珠宝,S代表你拥有的石头。S中的每个字符都是你拥有的一种石头。计算S中有多少石头也是珠宝。J中的字符不会重复出现,J和S中的所有字符都是英文字母。字母区分大小写,因此“a”被认为是与“A”不同类型的石头。例如: 输入:J =“aA”,S =“aAAbbbb” 输出:3 输入:J =“z”,S =“ZZ” 输出:0 注意 : S和J将由字母组成,长度最多为50。 J中的字符不会重复出现。 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。 02 第一种解法 题目的意思是计算出J中的每个字符,在S中出现的次数之和。因为J中的字符不会有重复值,所以可以直接计算,不用担心计算失真。因为是英文字母,所以可以直接使用整型数组,以S中每个字符代表的ASCII值来作为索引,出现次数为值,然后遍历该数组,再以J的每个字符作为索引,累加对应的元素值即可。 public int numJewelsInStones(String J, String S) { int[] arr = new int[128]; for (char ch : S.toCharArray())

编程算法 - 数字在排序数组中出现的次数 代码(C)

被刻印的时光 ゝ 提交于 2020-01-23 14:16:07
版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u012515223/article/details/36869869 数字在排序数组中出现的次数 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 统计一个数字在排序数组中出现的次数. 通过 折半查找 , 找到首次出现的位置, 再找到末次出现的位置, 相减就可以. 时间复杂度O(logn). 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <stdlib.h> #include <string.h> int GetFirstK (int* data, int length, int k, int start, int end) { if (start > end) return -1; int middleIndex = (start + end)/2; int middleData = data[middleIndex]; if (middleData == k) { if ((middleIndex>0 && data[middleIndex

【红外DDE算法】聊聊红外图像增强算法的历史进程(第一回)

旧巷老猫 提交于 2020-01-23 13:41:43
宽动态红外图像增强算法综述 回顾过去 带你回顾宽动态红外图像增强算法的历史进程,历来学者的一步步革命(新的算法框架提出),一步步改革(改进优化),从简单粗暴到细致全面。 正所谓是:改革没有完成时,只有进行时。没有完美的算法,也没有最好的算法,只有更好更优秀的算法。 展望未来 以现在看90年代的算法,那时候的算法是有点粗糙,但是正是在这一点点的积累上,才有了现在较之优秀完美的算法。 正所谓是:站在巨人的肩膀,我们看得更远,不积跬步无以至千里。 目录 为什么需要该算法? 摘要 主要的三类算法思路大致介绍 第一类:基于映射的宽动态图像增强算法 第二类:基于图像分层的宽动态图像增强算法 第三类:基于梯度域的宽动态图像增强算法 三类算法的对比与优缺点分析 1.关于为什么需要宽动态红外图像增强算法? 详见我之前的文章《数字细节增强算法的缘由与效果(我对FLIR文档详解)》 https://blog.csdn.net/hahahahhahha/article/details/102978112. 2.摘要: 从三类算法开始介绍,基于映射的宽动态图像增强算法,基于图像分层的宽动态图像增强算法,基于梯度域的宽动态图像增强算法。 3.主要的三类算法思路大致介绍 早期的算法(大概1999年之前),主要是基于映射的。实现简单,复杂度低,但是细节不够凸显。 为此,学者提出了基于图像分层的算法

目标检测算法分类及相关术语

江枫思渺然 提交于 2020-01-23 10:44:27
1.目标检测算法分类: Two stage: 1)先生成Region Proposal, 2)通过卷积神经网络进行分类。 步骤:特征提取 ——> 生成Region Proposal ——> 分类/回归 代表算法:R-CNN、 Spp-Net、Fast R-CNN、Faster-RCNN,MTCNN等。 One stage 1)直接提取特征来预测物体的类别和位置。 步骤:特征提取 ——> 分类/回归 代表算法: YOLOv1、v2、 v3, SSD, RetinaNet等 2.相关术语 bounding box :给出物体在图片中的定位区域 一般表示为: (x1,y1,w,h) , 其中(x1,y1) 为左上角的点。一般分为待预测的框和已经标定的框,其中已经标定的框称为ground truth。 loU (Intersection of Union): 两个bounding box的重叠程度= (A交B) / (A并 B),用于评价算法测的结果和真实结果(人工标注的ground truth)的差别,范围[0,1], 交并比越大,两个包围盒的重叠程度越高。有几种iou的算法,可百度一下。 nms(非极大值抑制): 通过计算iou,从一堆候选框中去掉重复的候选框。 (注意这里是非极大值抑制而非最大值抑制,原因在于多目标检测时的多堆候选框) mAP (mean average