1 专注于计算机视觉的AndyJiang

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

排序算法之各种指标对比

2020-09-28 17:00:35

排序算法之直接插入排序和希尔排序

直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表,模仿扑克牌的思想。看代码:def insert_sort(nums): n = len(nums) for i in range(1,n): if nums[i] < nums[i-1]: # 需要将nums[i]插入到有序子表中 temp = nums[i] # 设置哨兵 j = i - 1 w

2020-09-28 15:10:02

深度学习之l2正则,weight decay,momentum,batchsize,lr超参数之间的关系

l2正则L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题。权重衰减(weight decay)weight decay(权值衰减)的使用既不是为了提高收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大。L2正则

2020-09-27 20:01:49

数据结构之B树和B+树

B树B树是为实现高效的磁盘存取而设计的多叉平衡搜索树。这个概念在文件系统,数据库系统中非常重要。基本原理B树是一种查找树,它最初启发于二叉查找树,二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。如果这些节点存储在外存储器中,每访问一个节点,相当于就是进行了一次I/O操作,随着树高度的增加,频繁的I/O操作一定会降低查询的效率。从外存储器中读取信息的步骤,简单来分,大致有两步:找到

2020-09-27 19:45:05

图之DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法

概要对于DFS和BFS,如果遇到搜索和遍历,肯定要想到堆栈和队列,而遇到堆栈肯定就要想到是不是可以用递归来实现,因为递归程序其实就是函数在内存中的出栈入栈,DFS就是使用堆栈或者递归来实现,而类似层次遍历的BFS自然就可以使用队列来实现DFS和BFSgraph = { 'a' : ['b', 'c'], 'b' : ['a', 'c', 'd'], 'c' : ['a','b', 'd','e'], 'd' : ['b' , 'c',

2020-09-24 20:33:38

操作系统之高并发

本文参考,如有侵权,联系删除什么是高并发高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。吞吐量:单位时间内处理的请求数量。

2020-09-19 21:04:47

目标检测之anchor_based和anchor_free优缺点

anchor based优点使用anchor机制产生密集的anchor box,使得网络可直接在此基础上进行目标分类及边界框坐标回归。加入先验,训练稳定密集的anchor box可有效提高网络目标召回能力,对于小目标检测来说提升非常明显。缺点anchor机制中,需要设定的超参:尺度(scale)和长宽比( aspect ratio) 是比较难设计的。这需要较强的先验知识。冗余框非常之多:一张图像内的目标毕竟是有限的,基于每个anchor设定大量anchor box会产生大量的easy-sa

2020-09-19 20:40:35

目标检测之单阶段和两阶段检测算法的对比

双阶段精度高但速度慢,单精度速度快但精度稍逊。双阶段目标检测器采用了两段结构采样来处理类别不均衡的问题,rpn使正负样本更加均衡使用了两阶段级联的方式来拟合bbox,先粗回归,再精调。One stage detector 的一个通病就是既要做定位又要做classification。最后几层1x1 conv layer 的loss 混在一起,并没有什么专门做detection 或者专门做bbox regression的参数,那每个参数的学习难度就大一点。Two stage detector 的第一个s

2020-09-19 20:39:21

数据结构之单链表和双链表的区别

本文参考,如有侵权,联系删除链表和数组的区别数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。数组的优点随机访问性强(通过下标进行快速定位)查找速度快数组的缺点插入和删除效率低(插入和删除需要移动数据)可能浪费内存(因为是连续的,所以每次申请数组之前必须规定数组的大小,如果大小不合理,则可能会浪费内存)内存空间要求高,必须

2020-09-19 10:52:40

目标检测之RCNN,Fast RCNN,Faster RCNN

R-CNNRich feature hierarchies for accurate object detection and semantic segmentation-CVPR2014训练过程准备region proposal。对于训练集中的所有图像,采用selective search方式来获取,最后每个图像得到2000个region proposal。准备正负样本。如果某个region proposal和当前图像上的所有ground truth中重叠面积最大的那个的IOU大于等于0.5

2020-09-18 17:06:02

目标检测之MAP计算方式

precision表示某一类样本预测有多准。 Recall表示某一类样本,预测正确的与所有Ground Truth的比例。  Recall和Precision一样,脱离类别是没有意义的。说道这两个指标,一定指的是某个类别的。以Recall为横轴,Precision为纵轴,就可以画出一条PR曲线,PR曲线下的面积就定义为AP。所有类别的平均即为MAPimport numpy as npdef voc_ap(rec, prec, use_07_metric=False): """ a

2020-09-16 20:20:22

栈之消除连续k个重复的字符

给定一个字符串s和k,删除s中连续重复的k个字符,直到不能删除为止。示例:input: “aaadbbcccbbdd”, K=3dbbbbdddbddoutput: dbdddef remove_k(s, k): stack = [] n = len(s) i = 0 while i < n: temp = stack[-k+1:] t = list(set(temp)) if len(stack) >= k-1 and len(t) == 1

2020-09-13 10:22:50

BFS之网格中的最短路径

LeetCode 1293. 网格中的最短路径给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物)。每一步,您都可以在空白单元格中上、下、左、右移动。如果您 最多 可以消除 k 个障碍物,请找出从左上角 (0, 0) 到右下角 (m-1, n-1) 的最短路径,并返回通过该路径所需的步数。如果找不到这样的路径,则返回 -1。示例 1:输入: grid = [[0,0,0], [1,1,0], [0,0,0], [0,1,1], [0,0,0]], k = 1输

2020-09-11 11:20:56

DFS之最大人工岛

Leetcode 827. 最大人工岛在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地。进行填海之后,地图上最大的岛屿面积是多少?(上、下、左、右四个方向相连的 1 可形成岛屿)示例 1:输入: [[1, 0], [0, 1]]输出: 3解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。示例 2:输入: [[1, 1], [1, 0]]输出: 4解释: 将一格0变成1,岛屿的面积扩大为 4。示例 3:输入: [[1, 1], [

2020-09-11 10:43:46

数学动态规划之整数拆分

LeetCode 343. 整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。数学法:尽可能多的拆成3如果能整除3:乘积为3^(n//3)如果除3的余数为1:拆成(n//3-1)个3和两个2,因为13 < 22如果除3的余数为2

2020-09-10 16:30:07

区间DP之合并石头的最低成本

LeetCode 1000. 合并石头的最低成本有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头。每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数。找出把所有石头合并成一堆的最低成本。如果不可能,返回 -1 。示例 1:输入:stones = [3,2,4,1], K = 2输出:20解释:从 [3, 2, 4, 1] 开始。合并 [3, 2],成本为 5,剩下 [5, 4, 1]。合并 [4, 1],成本为 5,剩下 [5

2020-09-10 15:30:20

深度学习之联邦学习

什么是联邦学习联邦学习(federated learning)能够让AI算法借助位于不同站点的数据中获得经验。该方法能够让多个组织协作开发模型,而且不需要彼此之间直接共享敏感的数据在多次训练迭代过程中,共享模型所覆盖的数据范围会比任何一个组织内部拥有的数据都要大得多。联邦学习如何工作难点:不仅仅是数据量的问题,数据集还需要极高的多样化。但是考虑到隐私性,这些数据一般无法共享。解决办法:联邦学习摒弃了将数据集中到某个位置进行训练的方法,取而代之的是将模型分散到各个不同的站点进行迭代训练。例如

2020-09-10 10:34:00

深度学习之知识蒸馏(Knowledge Distillation)

本文参考以下链接,如有侵权,联系删除论文参考引言知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,由于其简单,有效,在工业界被广泛应用。Knowledge Distillation,简称KD,顾名思义,就是将已经训练好的模型包含的知识(”Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去。温度: 我们都知道“蒸馏”需要在高温下进行,那么这个“蒸馏”的温度代表了什么,又是如何选取合适的温度?背景虽然在一般情况下,我们不会去区分训练和部署使用的模型,但

2020-09-10 10:17:02

机器学习之如何选取特征(特征工程)

特征工程特征工程的意义是找一个更好的空间去重构表达,把原始的数据对象映射到这个空间去表达,更便于你的应用。比如分类应用,最好是找到线性可分的空间嘛。不止是神经网络可以代替人工找特征,理论上越是复杂的模型本身就是在代替人工找特征,只不过复杂模型的有效训练又成了难题。深层神经网络(就是层数特别多)就是一种通用的复杂的模型,而深度学习很大程度上解决了它的训练问题。当你用一个N层的网络去学习人脸分类时,看上图最左边,最下面的就是接近输入端的层学到的特征,长相是不是很像Gabor滤波~~这部分的表达粒度比较

2020-09-09 17:45:51

深度学习之常用激活函数

引言激活函数的目标是,将神经网络非线性化。激活函数是连续的且可导的。连续的:当输入值发生较小的改变时,输出值也发生较小的改变;可导的:在定义域中,每一处都是存在导数;常见的激活函数:sigmoid,tanh,relu。sigmoidsigmoid是平滑的阶梯函数,可导。sigmoid可以将任何值转换为0~1概率,用于二分类。当使用sigmoid作为激活函数时,随着神经网络隐含层(hidden layer)层数的增加,训练误差反而加大。表现为:靠近输出层的隐含层梯度较大,参数更新速度快,很

2020-09-09 16:32:05

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。