- 博客(29)
- 收藏
- 关注
原创 EfficientNet
一、背景介绍卷积神经网络通常是在固定资源预算下开发的,如果可用资源有变化,则可以进行Model Scaling(模型缩放)以提高模型性能。为了获得更高的准确率和效率,对卷积网络进行缩放是近几年研究者们经常干的事情,比如从ResNet-18到ResNet-200是对depth的缩放,MobileNet系列里width multiplier对channel的缩放等等。然而,大家都在模型缩放了,而且放缩depth、width(channel)以及resolution都是有效的,但是并没有人总结出原理性的方法来指
2020-05-23 08:45:39
646
原创 MobileNet_v2详解
一、背景介绍 MobileNet_v1看起来已经不错了,但有人在实际使用的时候, 发现depthwise layer的卷积核在训练之后不少参数为0,这很可能是因为ReLU导致神经元死亡。另外,MobileNet_v1没有引入shortcut,无法复用特征。二、思路提出2.1 Linear Bottlenecks 假设将许多张图片作为网络的输入,经过第i层输出并激活之后得到一个hi×w...
2020-04-22 16:57:06
1513
原创 MobileNet_v1详解
一、背景介绍 自2012年AlexNet问世以来,CNN被设计得越来越深,越来越复杂,对硬件的要求也就随之提高,而且这些大型网络都是以准确率为导向设计的,很少考虑到效率的优化。但是在实际生活的一些应用中(比如自动驾驶、增强现实等),不仅硬件受限制,而且注重效率,所以越来越多的人开始研究小巧而高效的网络。 当时(2017年)的研究方向可以分为两种,一是压缩复杂网络的预训练模型,二是直接设计并...
2020-04-17 14:21:47
854
原创 ResNet
一、背景介绍随着层数的堆叠,网络的深度会不断增加,特征的level也会提升,很多CV方向的任务也因此取得更好的成绩。但是,一个问题随之出现:通过层数堆叠不断加深网络的同时,可以学习到更好的网络吗?答案是否定的,梯度消失/爆炸是最大的阻碍。不过随着normalized initialization和Batch normalizaiton的应用,很大程度上已经解决了这个问题。但是退化问题(degr...
2020-04-13 20:29:45
353
原创 VGG详解
VGG一、背景介绍VGG全称是Visual Geometry Group,因为是由Oxford的Visual Geometry Group提出的。AlexNet问世之后,很多学者通过改进AlexNet的网络结构来提高自己的准确率,主要有两个方向:小卷积核和多尺度。而VGG的作者们则选择了另外一个方向,即加深网络深度。二、网络架构卷积网络的输入是224 * 224的RGB图像,整个网络的组成...
2020-04-02 15:43:49
35059
3
原创 IoU和NMS
一、概述非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。例如在行人检测中,滑动窗口经提取特征,经分类器分类识别后,每个窗口都会得到一个分数。但是滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。这时就需要用到NMS来选取那些邻...
2020-03-22 19:27:27
554
原创 LeetCode 二叉树的层平均值
题目 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。所以就不用考虑小数了。解法一...
2019-04-23 19:29:00
180
原创 LeetCode N叉树的层序遍历
题目 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。示例 例如,给定一个 3叉树 :解法一、广度优先搜索( Python )class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: if root == None: ...
2019-04-23 15:54:20
292
原创 LeetCode 修剪二叉搜索树
题目 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2解法一、递归 (Py...
2019-04-22 20:17:23
156
原创 LeetCode 叶子相似的树
题目 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。解法一、深度优先搜索-先序...
2019-04-19 19:33:59
129
原创 LeetCode 递增顺序查找树
题目 给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9输出:[1,...
2019-04-19 16:41:39
171
原创 LeetCode 单值二叉树
题目 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例input: [1,1,1,1,1,null,1] 1 / \ 1 1 / \ \ 1 1 1output: true提示:给定树的节点数范围是 [1, 100]。也就是没有r...
2019-04-16 18:27:04
186
原创 LeetCode N叉树的最大深度
题目 给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。示例给定一个三叉树: 1 / | \ 3 2 4 / \ 5 6返回其最大深度 3。说明:树的深度不会超过 1000。树的节点总不会超过 5000。解法一、DFS递归 ( Python )class Solution: ...
2019-04-15 18:40:40
359
原创 LeetCode 二叉搜索树中的搜索
题目 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。示例给定搜索值2和一棵二叉搜索树: 4 / \ 2 7 / \ 1 3你应该返回如下子树: 2 / \ 1 3在上...
2019-04-14 20:17:11
233
原创 LeetCode N叉树的后序遍历
题目 给定一个 N 叉树,返回其节点值的后序遍历。示例给定一个三叉树: 1 / | \ 3 2 4 / \ 5 6返回其后序遍历: [5,6,3,2,4,1]解法递归( Python )class Solution: def __init__(self): self.res = [] def ...
2019-04-14 18:59:58
624
原创 LeetCode N叉树的前序遍历
题目 给定一个 N 叉树,返回其节点值的前序遍历。示例给定一个三叉树: 1 / | \ 3 2 4 / \ 5 6返回其前序遍历:[1,3,5,6,2,4]解法递归实现( Python )"""# Definition for a Node.class Node: def __init__(self, val, children)...
2019-04-13 19:26:14
256
原创 LeetCode 翻转二叉树
题目 翻转一棵二叉树。简单来说就是将二叉树每一个节点的左右子节点进行交换。示例input: 4 / \ 2 7 / \ / \ 1 3 6 9output: 4 / \ 7 2 / \ / \ 9 6 3 1解法深度优先遍...
2019-04-12 18:36:13
303
原创 LeetCode 二叉树的最大深度
题目 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 注: 叶子节点是指没有子节点的节点。示例 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 解法深度优先遍历-递归实现...
2019-04-11 19:28:45
143
原创 LeetCode 合并两棵二叉树
题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例输入: Tree 1 Tree 2 ...
2019-04-11 14:25:40
504
原创 GBDT 原理详述
论文 Greedy Function Approximation: A Gradient Boosting Machine函数估计 假设一组数据中输入变量为x={x1,⋯ ,xn}\boldsymbol x = \left\{ x_1,\cdots,x_n \right\}x={x1,⋯,xn}, 输出变量为yyy。我们需要找到一个带有参数集合P={P...
2019-03-29 12:13:22
207
原创 LeetCode 买卖股票的最佳时机
题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6 - 1 = 5 。 ...
2019-03-19 15:21:36
141
原创 LeetCode 打家劫舍
题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 ...
2019-03-19 10:12:39
128
原创 LeetCode 使用最小花费爬楼梯
题目 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1...
2019-03-18 09:40:18
253
原创 LeetCode 快乐数
题目 编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例input: 19output: true解释: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2...
2019-03-15 10:47:04
323
原创 LeetCode 爬楼梯
题目 假设你正在爬楼梯。需要 n (正整数) 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例input: 2output: 2解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 input: 3output: 3解释:有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1...
2019-03-14 10:26:14
179
原创 LeetCode 最大子序和
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例input: [-2, 1, -3, 4, -1, 2, 1, -5, 4]output: 6解法动态规划 ( Python )class Solution: def maxSubArray(self, nums) -> int: tmp...
2019-03-14 10:16:57
160
原创 LeetCode 只出现一次的数字
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例input: [2, 2, 1]output: 1input: [4,1,2,1,2]output: 4解法Set ( Python )class Solution: def singleNumber(self, nums: List[int]) -&am
2019-03-09 10:00:18
149
原创 LeetCode 无重复字符的最长子串
无重复字符的最长子串题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例input: "abcabcbb"output: 3input: "bbbbb"output: 1input: "pwwkew&quot
2019-03-08 10:54:30
173
原创 C++ 优先队列用法
Priority Queue优先级队列和一般的队列(queue)不同之处在于,优先级队列里的元素具有权值,在出队列时总是权值最大的元素出列,本质是一个heap。C++ Definetemplate <class Type, class Container= vector <Type>, class Compare= less &amp
2019-01-07 10:49:10
2008
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人