自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 深度学习之NLP学习笔记(二)—文本处理与特征工程

文本处理在现有数据中,文本是最非结构化的形式,里面有各种各样的噪声;如果没有预处理,文本数据都不能分析。清理和标准化文本的整个过程叫做文本预处理(text preprocessing)其作用是使文本数据没有噪声并且可以分析。具体包含以下三个内容:去噪声;词汇归一化;目标标准化去噪声噪声是指和需要的输出没有关系的文本。例如:语言的停用词(is,am, the, of等),URLs, 链接,社...

2020-04-28 01:27:15 975

原创 深度学习之NLP学习笔记(一)—词嵌入及Word2Vec

一、词嵌入参考文章:什么是词嵌入词嵌入是单词的一种数值化表示方式,一般情况下会将一个单词映射到一个高维的向量中(词向量)来代表这个单词。词嵌入实际上是一种将各个单词在预定的向量空间中表示为实值向量的一类技术。每个单词被映射成一个向量(初始随机化),并且这个向量可以通过神经网络的方式来学习更新。因此这项技术基本集中应用与深度学习领域。这项技术的关键点在于如何用密集的分布式向量来表示每个单词。...

2020-04-27 14:47:37 1032

原创 机器学习之决策树基本知识点

决策树是一种常用分类模型,优点是可读性强,分类速度快,学习时利用训练数据根据损失函数最小化的原则建立树模型。建立决策树的三个步骤:特征选择、决策树的生成、决策树的修剪(预修剪、后修剪)对于特征的选择,对于不同的算法有不同的方法,但是本质目的其实是为了降低模型的不确定性,基于其评价指标的不同,主要有ID3算法,C4.5算法和CART算法,其中ID3算法的评价指标是信息增益,C4.5算法的评价指标...

2020-04-23 00:41:02 447

原创 关于目标检测之Faster-RCNN的理解

Faster-RCNN(2015年)该目标检测算法是基于Fast-RCNN的基础上,进行了改进,主要是对RCNN和Fast-RCNN中的用Selective Research方法生成的候选框进行改进。提出了一种RPN生成候选框的方法。FasterRCNN由两个模型组成,第一个就是RPN(深层全卷积网络)生成候选区域,第二个就是使用FastRCNN对候选区域进行检测。相比FASTER-RCNN...

2020-04-02 17:59:19 450

原创 关于目标检测RCNN(Fast-RCNN/Faster-RCNN)系列的理解

目前较为成熟的目标检测算法可总结如下:RCNN(2014年)RCNN是一个多阶段训练模型,包括生成候选区域,CNN微调,SVM分类训练以及边界框回归等多个步骤(Selective Research+CNN+SVM)。整体流程类似于滑动窗口思想,R-CNN 采用对区域进行识别的方案,具体是:1、给定一张输入图片,从图片中提取 2000 个类别独立的候选区域。2、对于每个区域利用 CNN...

2020-04-02 00:56:07 878

原创 【剑指offer】22—树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:第一步:在树A中找到和树B的节点一样的节点R第二部:判断树A以R为根节点的子树是不是包含树B一样的结构# class TreeNode:# def __init__(self, x):# self.val = x# self.left = ...

2020-04-30 21:26:41 129

原创 【剑指offer】21—栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:建立一个辅助栈,然后依次将入栈元素压入,如果栈顶元素等于出栈序列,则循环判断,最...

2020-04-30 20:08:19 120

原创 【剑指offer】20—顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:定义四个变量,表示左上和右下的打印范围,一次旋转打印结束后,往对角分别前进和后退一个单位。def printMatrix(...

2020-04-29 14:35:04 114

原创 【Python3】正则表达式学习笔记

正则表达式正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式的使用,可以通过简单的办法来实现强大的功能。下面先给出一个简单的示例:^ [0-9]+abc$^ 为匹配输入字符串的开始位置。[0-9]+匹配多个数字, [...

2020-04-28 14:51:47 228

原创 百度网易华为2020年春招算法岗笔试题

百度:一个mxn的矩阵,矩阵中每个元素为i*j mod 10。然后用axb的卷积核去池化,求池化后的元素之和A = list(map(int,input().split()))n = A[0]m = A[1]a = A[2]b = A[3]res = [[0 for _ in range(m)] for _ in range(n)]for i in range(1,n+1): ...

2020-04-26 12:24:10 741

原创 快速幂详解及其Python实现

快速幂传统的幂运算,是对底数进行连乘,时间复杂度为o(n),例如:2^ 13 = 2* 2 * 2……*2,连乘十三次。但是我们可以通过增加底数,减少指数的做法,降低时间复杂度。从而能够实现复杂度为o(logn)的幂运算。还是以2^13为例,13的二进制为1101,因此2的13次方可以分解成以下形式:和13的二进制1101相对比,只要二进制为1的位,就有权重,权重为2^(i-1),i表示第几...

2020-04-26 00:48:50 3259 1

原创 【剑指offer】19—包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。链接:https://www.nowcoder.com/questionTerminal/4c776177d2c04c2494f2555c9fcc1e49?answerType=1&f=d...

2020-04-25 00:02:52 126

原创 【剑指offer】18—变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution: def jumpFloorII(self, number): #f(2)=2;f(3)=2f(2)=2*2 if number <=1: return n...

2020-04-24 23:55:08 133

原创 【剑指offer】17—重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:根据中序遍历和前序遍历可以确定二叉树,具体过程为:1、根据前序序列第一个结点确定根结点;2、根据根结点在中序序列中的位置分割出左右两个子序列;...

2020-04-23 14:09:30 112

原创 【剑指offer】16—把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。方法一:利用内置函数实现全排列,然后找出最小值class Solution: def PrintMinNumber(self, numbers): # write code here ...

2020-04-23 12:53:11 127

原创 【LeetCode刷题】3 无重复最长子串 || 4 寻找两个数组的中位数

3、无重复最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。思路:用一个字符串和一个字符串长度来记录所有可能的情况。class Solution(object): def lengthOfLongestSubstring(self, s):...

2020-04-21 23:07:56 135

原创 【LeetCode之动态规划】5-最长回文字符串

最长回文字符串方法一:暴力匹配 (Brute Force)1、根据回文子串的定义,枚举所有长度大于等于 22 的子串,依次判断它们是否是回文;2、在具体实现时,可以只针对大于“当前得到的最长回文子串长度”的子串进行“回文验证”;3、在记录最长回文子串的时候,可以只记录“当前子串的起始位置”和“子串长度”,不必做截取。这一步我们放在后面的方法中实现。class Solution: ...

2020-04-21 14:03:37 194

原创 【剑指offer】15—数组中出现次数超过一半的元素

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。方法一:利用字典,记录每个元素的个数,然后判断最大值得2倍是否大于给定的数字,如果大于,返回相应的键,否则返回0。class Solution: def MoreTha...

2020-04-17 00:40:01 152

原创 【剑指offer】14-字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。方法一:递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。遍历字符串,固定可能出现在第一个位置的字符,作为第一个字符,后面剩下的字符串的组合用递归使用本函数的方式得到。class...

2020-04-17 00:21:57 109

原创 【LeetCode刷题】41 缺失的第一个正数 || 46 全排列

41、缺失的第一个正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1本题是一道纯算法题,和数据结构无关,而且题目中的说明几乎把算法给限定死了。这个思路也很巧妙,对于一个正数number,我们将其放在数组nums中第numb...

2020-04-15 11:50:00 164

原创 卷积神经网络的发展及各模型的优缺点

前沿在CV领域,我们需要熟练掌握最基本的知识就是各种卷积神经网络CNN的模型架构,不管我们在图像分类或者分割,目标检测,NLP等,我们都会用到基本的CNN网络架构。CNN从最初的2012年AlexNet横空出世到2014年VGG席卷世界以及2015年ResNet奠定了该领域的霸主地位,网络模型变得越变越深,而且也得到证明,越深的网络拟合效果越好,但网络相应的参数量计算量都极速增加,不利于技术的...

2020-04-14 17:35:10 13922

原创 【LeetCode刷题】46 全排列 || N!的零的个数

46、全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]‘’’方法一:直接利用库函数class Solution: def permute(self, nums): import itertools ...

2020-04-13 23:05:33 237

原创 排序算法之选择/插入排序【python实现】

1、选择排序基本步骤如下:1、在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3、以此类推,直到所有元素均排序完毕。def select_sort(ary): n = len(ary) for i in range(0,n): min = i ...

2020-04-13 20:55:38 138

原创 【剑指offer】13-最小的k个数

最小的k个数输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:可以先利用排序算法进行排序,然后取出k个最小的数。排序算法有冒泡、选择、堆排序、归并、快排等,为了练习这种排序算法,我们用这些算法一一求解本题。class Solution: def GetLeastNumbers_Solution(self, ...

2020-04-13 20:40:30 89

原创 排序算法之堆排序及Python实现

面试中经常会被问到排序算法,其中快速排序、归并排序、堆排序最有可能会被问到,它们的相似的地方在于算法复杂度均为O(nlogn),其中快排和归并排序前面已经介绍过,今天我们来学习一下堆排序。堆排序基本概念堆排序是利用堆进行排序的,堆是一种完全二叉树。完全二叉树是一种除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐的树。堆有两种类型: 大根堆小根堆两种类型的概念如下:大根...

2020-04-13 09:48:54 183

原创 【动态规划】两个字符串的最长公共子串和子序列

题目描述:解题思路:利用动态规划,遍历比较两个字符是否相等,如果相等,则标记为1,并存储。显而易见,相邻字符之间对角线元素之和的最大就是最长公共子串。def LCstring(string1,string2): len1 = len(string1) len2 = len(string2) res = [[0 for i in range(len1+1)] for ...

2020-04-11 15:11:14 1141 1

原创 【剑指offer】12-两个链表的第一个公共节点

两个链表的第一个公共节点输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路:首先我们要知道什么是公共节点,两个链表从某一节点开始,他们的next都指向同一个节点。但由于是单向链表的节点,每个节点只有一个next,因此从第一个公共节点开始,之后他们的所有节点都是重合的,不可能再出现分叉。所以可以先遍历两个链表得...

2020-04-11 14:26:28 91

原创 深度学习基础知识总结(一)

1、推导反向传播算法2、Relu激活函数的优缺点?优点包括:1、解决了梯度消失、爆炸的问题2、计算方便,计算速度快,求导方便3、加速网络训练缺点包括:1、由于负数部分恒为0,会导致一些神经元无法激活2、输出不是以0为中心3、Sigmoid函数与Softmax函数从函数定义上来看,sigmoid激活函数的定义域能够取任何范围的实数,而返回的输出值在0到1的范围内。sigmoid...

2020-04-08 22:03:39 680

原创 【剑指offer】11-合并两个有序链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表 def Merge(self, ...

2020-04-08 14:51:06 117

原创 【LeetCode刷题】300 最长上升子序列

300、最长上升子序列题目描述:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4思路:利用动态规划用dp[i] 表示 从下标0 到下标i 的最长上升子序列的长度,例如对于样例输入[10,9,2,5,3,7,101,18], 有 dp = [ 1, 1, 1, 2, 2, 3, 4, 4]。显然dp[0] = ...

2020-04-07 00:39:48 137

原创 C++基础知识点总结

1.面向对象技术的基本概念是什么,三个基本特征是什么?答:基本概念:类、对象、继承; 基本特征:封装、继承、多态。封装:将低层次的元素组合起来形成新的、更高实体的技术;继承:广义的继承有三种实现形式:实现继承、可视继承、接口继承。多态:允许将子类类型的指针赋值给父类类型的指针2.什么是多态?多态有什么作用?答:多态就是将基类类型的指针或者引用指向派生类型的对象。多态通过虚函数机制实现。...

2020-04-06 21:49:06 323

原创 【剑指offer】10-剪绳子

剪绳子给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。方法一:动态规划动态规划求解问题的四个特征:①求一个问题的最优解;②整体的问题的最优...

2020-04-06 00:23:58 247

原创 【剑指offer】9-用两个栈实现队列

用两个栈实现队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析(来源牛客)队列的特性是:“先入先出”,栈的特性是:“先入后出”当我们向模拟的队列插入数 a,b,c 时,假设插入的是 stack1,此时的栈情况为:栈 stack1:{a,b,c}栈 stack2:{}当需要弹出一个数,根据队列的"先进先出"原则,a 先进入,则 a 应该先弹出。...

2020-04-05 18:01:11 119

原创 【剑指offer】8-旋转数组的最小数字

旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。方法一:无任何意义,直接对数组求最小值class Solution: def minNumbe...

2020-04-05 17:10:27 101

原创 【剑指offer】7-链表中倒数第k个节点

链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个结点。思路:由于链表只能从前往后遍历,所以我们可以先求出链表的总长度N,然后利用第N-k个节点就是我们需要的来解决。首先,统计链表的长度有两种方法,循环或者递归。分别如下: #循环方式实现 def getSingleLinkedListNodeCount(self,node): if node == No...

2020-04-04 22:12:58 96

原创 【剑指offer】6-反转链表

反转链表输入一个链表,反转链表后,输出新链表的表头。思路:首先将原链表的第一个节点变成了新链表的最后一个节点,同时将原链表的第二个节点保存在cur中。循环反转,就是从原链表的第二个节点开始遍历到最后一个节点,将所有节点翻转一遍# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self...

2020-04-04 21:00:55 114

原创 数据结构与算法之链表

线性表线性表的定义:一些元素的序列,维持着元素之间的线性关系。实现线性表的基本需要是:(1)能够找到表首元素;(2)从表里的任意元素出发,能找到它之后的下一个元素;基于链接技术实现的线性表称为链表。单链表单链表的特点总结如下:(1)一个单链表由一些具体的表结点组成;(2)每个节点是一个对象,有自己的标识或链接;(3)节点之间通过节点链接建立起单向的顺序结构为了表示链表的结束,通常会...

2020-04-03 15:58:48 160

原创 【LeetCode刷题】67 二进制求和 || 69 X的平方根

67、二进制求和给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”方法一:首先把两个字符串通过补零的方式对齐,然后进行相加,如果是有进位的,则记录,最后判读最高位是否有进位即可。cl...

2020-04-01 16:25:27 220

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除