序列模式

论文笔记 - 《Deep Learning》(Yann LeCun Yoshua Bengio & Geoffrey Hinton)经典

别等时光非礼了梦想. 提交于 2020-01-19 15:42:10
论文: LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. “Deep learning.” Nature 521.7553 (2015): 436-444. [pdf] (Three Giants’ Survey) 监督学习 机器学习最常见的形式,不管是否深入都是监督学习。 我们计算一个目标函数,它度量输出分数与期望的分数模式之间的误差(距离)。然后,机器修改其内部可调参数,以减少这种误差。这些可调参数通常称为权重,它们是实数,可以看做是定义机器输入输出函数的按钮。在一个典型的深度学习系统中,可能有数亿个这样的可调权重,以及数亿个用于训练机器的带标签的例子。 在实践中,大多数从业者使用一种称为随机梯度下降(SGD)的程序。这包括显示几个示例的输入向量,计算输出和误差,计算这些示例的平均梯度,并相应地调整权重。从训练集到目标函数的平均值停止下降,对许多小样本重复这个过程,它们之所以被称为随机,是因为每个小样本集都给出了所有样本平均梯度的这里会有的噪声的估计。 传统方法是手工设计良好的特征提取器,这需要大量的工程技术和专业领域知识。但是如果通过使用通过学习过程而得到的良好的特征,那么这些都是可以避免的了。这就是深度学习的关键优势。 深度学习的体系结构是简单模块的多层栈,所有(或大部分)模块的目标是学习,还有许多计算机非线性输入输出的映射

[总结] 后缀数组学习笔记

人走茶凉 提交于 2020-01-19 02:52:09
$ \(emmm\) 又开了字符串的新坑,下一个阶段大概就是学习后缀家族吧... 没有 紧跟机房里神仙的步伐 先学后缀数组好了 概念 参考博客-> 戳我戳我 求出来SA数组就看了我半天... 放一个板子自己感觉难理解的东西都在注释里了 #include<set> #include<map> #include<cmath> #include<queue> #include<cctype> #include<vector> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using std::min; using std::max; using std::swap; using std::vector; typedef double db; typedef long long ll; #define pb(A) push_back(A) #define pii std::pair<int,int> #define all(A) A.begin(),A.end() #define mp(A,B) std::make_pair(A,B) namespace NewweN{ const int N=1e6+5; int x[N],y[N],c[N]; char s[N];int n,m,num

卷积神经网络CNN在序列处理中的应用

坚强是说给别人听的谎言 提交于 2020-01-19 02:22:59
众所周知,CNN在机器视觉问题上表现出色,因为它能够进行卷积运算,从局部输入图块中提取特征,并能够将表示模块化,同时可以高效利用数据。 这些性质让卷积神经网络在计算机视觉领域表现优异,同样也让他对序列处理特别有效。时间可以被看做一个空间维度,就像二维图像的高度或宽度。 对于某些序列处理问题,这种一维卷积神经网络的效果可以媲美RNN,而且计算代价通常要小很多。最近,一维卷积神经网络【通常与空洞卷积核(dilated kernel)一起食用】已经在音频生成和机器翻译领域取得了巨大成功。对于文本分类和时间序列预测等简单任务,小型的一维卷积神经网络可以代替RNN,而且速度更快。 序列数据的一维池化 CNN中提到了二维池化运算,比如二维平均池化和二维最大池化,在卷积神经网络中用于对图像张量进行空间下采样。一维也可以做相同的池化运算:从输入中提取一维序列短(即子序列),然后输出其最大值(最大池化)或平均值(平均池化)。与二维卷积神经网络一样,该运算也是用于降低一维输入的长度(子采样)。 结合CNN和RNN来处理长序列 一维卷积神经网络分别处理每个输入序列段,所以它对时间步的顺序不敏感(此处说的顺序范围要大于局部尺度,即大于卷积窗口的大小),这一点与RNN不同。 为了识别更长期的模式,可以将许多卷积层和池化层堆叠在一起,这样上面的层能够观察到原始输入中更长序列段

条件测试操作与流程控制语句

喜夏-厌秋 提交于 2020-01-10 05:22:05
在编写Shell脚本时候,经常需要判断两个字符串是否相等,检查文件状态或者是数字的测试等。Shell提供了对字符串、文件、数值等内容的条件测试以及逻辑流程控制。 条件测试操作 程序中的流程控制是由比较和测试语句来处理的,bash具备多种与UNIX系统级特性相兼容的执行测试方法。 常用测试操作 test 命令,测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值。 格式1 test 条件表达式 格式2 [ 条件表达式 ] //常用格式,使用方括号时,要注意在条件两边加上空格。 常见测试类型 测试文件状态 字符串的比较 整数值的比较 逻辑测试 测试文件 格式 [ 操作符 文件或目录 ] 操作符: -d:测试是否为目录,是则为真(Directory) -e:测试目录或文件是否存在,存在则为真(Exist) -f:测试是否为文件,是则为真( file ) -r:测试当前用户是否有权限读取,是则为真( read ) - w :测试当前用户是否有权限写入,是这为真( write ) -x:测试当前用户是否可执行该文件,可执行则为真(Excute) -L:测试是否为符号链接文件,是则为真(Link) -nt:file1 -nt file2 如果 file1 比 file2 新(修改时间),则为真 -ot:file1 -ot file2 如果 file1 比 file2

我把RXjava的源码和这份面试都给你了,你还告诉我面不过拿不到offer?(一)

我们两清 提交于 2020-01-08 23:33:04
就在前不久做了一个关于RXJava的相关教学视频,过后整理了关于RxJava的预习资料和相关内容以及图文和相关源码,需要借鉴的可以和我联系~ 一丶 面试辅助路线(全部内容在完整的PDF里都有讲解) ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS (VX:mm14525201314) 二丶 RXJava预习: JAVA设计模式之观察者模式 1、初步认识 观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 2丶这个模式的结构图 : 3、可以看到,该模式包含四个角色 抽象被观察者角色: 也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。 抽象观察者角色: 为所有的具体观察者定义一个接口,在得到主题通知时更新自己。 具体被观察者角色: 也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。 具体观察者角色: 实现抽象观察者角色所需要的更新接口

【每日算法】排序算法总结(复杂度&稳定性)

做~自己de王妃 提交于 2020-01-03 05:15:03
一、插入排序:稳定,时间复杂度O(n^2) 想象你在打扑克牌,一開始左手是空的,接着右手開始从桌上摸牌,并将其插入到左手的一把牌中的正确位置上。为了找到这个正确位置,我们须要从右到左将它与手中的牌比較,直到找到合适的位置插入。整个过程的特点是,左手的牌是排好序的了。 详见: 插入排序 二、选择排序:不稳定,时间复杂度O(n^2) 每趟从未排序部分选出最小的元素。然后通过交换将其加入到已排序部分中。 详见: 选择排序 三、冒泡排序:稳定,时间复杂度O(n^2) 将待排序的元素看作是竖着排列的“气泡”。较小的元素比較轻。从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。 假设发现两个相邻元素的顺序不正确。即“轻”的元素在以下,就交换它们的位置。显然。处理一遍之后,“最轻”的元素就浮到了最高位置;处理两遍之后。“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。 一般地。第i遍处理时,不必检查第i高位置以上的元素。由于经过前面i-1遍的处理,它们已正确地排好序。 详见: 冒泡排序 四、归并排序:稳定。时间复杂度 O(nlog n),空间O(n) 分解:将n个元素分成各含n/2个元素的子序列。 解决:用归并排序法对两个子序列递归地排序。 合并

LINQ聚合算法解释

末鹿安然 提交于 2020-01-03 04:06:43
这可能听起来很蹩脚,但我还没有找到一个关于 Aggregate 的非常好的解释。 良好意味着简短,描述性,全面,有一个小而明确的例子。 #1楼 Aggregate主要用于分组或汇总数据。 根据MSDN“聚合函数在序列上应用累加器函数”。 示例1:添加数组中的所有数字。 int[] numbers = new int[] { 1,2,3,4,5 }; int aggregatedValue = numbers.Aggregate((total, nextValue) => total + nextValue); * important:默认情况下,初始聚合值是集合序列中的1个元素。 即:默认情况下,总变量初始值为1。 变量解释 total:它将保存func返回的总和值(聚合值)。 nextValue:它是数组序列中的下一个值。 将该值加到聚合值即总数上。 示例2:添加数组中的所有项。 同时将初始累加器值设置为从10开始添加。 int[] numbers = new int[] { 1,2,3,4,5 }; int aggregatedValue = numbers.Aggregate(10, (total, nextValue) => total + nextValue); 论点解释: 第一个参数是初始值(起始值即种子值),它将用于开始添加数组中的下一个值。 第二个参数是一个func

排序 之 堆排序 归并排序

陌路散爱 提交于 2019-12-28 04:05:01
堆的概念 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序 堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是对顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次大值。如此反复执行,就可以得到一个有序序列了。 有上述思想可知,堆排序的两个要点: 1.如何由一个无序序列构建成一个堆? 2.如何在输出堆顶元素后,调整剩余元素称为一个新的堆? /* 堆排序********************************** */ /* 已知L->r[s..m]中记录的关键字除L->r[s]之外均满足堆的定义, */ /* 本函数调整L->r[s]的关键字,使L->r[s..m]成为一个大顶堆 */ void HeapAdjust(SqList *L,int s,int m) { int temp,j; temp=L->r[s]; for(j=2*s;j<=m;j*=2) /* 沿关键字较大的孩子结点向下筛选 */ { if(j<m && L->r[j]<L->r[j+1]) ++j; /*

泡泡机器人,ORB_SLAM2介绍

醉酒当歌 提交于 2019-12-28 00:27:22
ORB-SLAM2:一种开源的VSLAM方案 泡泡机器人 泡泡机器人SLAM 2017-07-03 泡泡机器人翻译作品 原文:ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras 作者: Raúl Mur-Artal and Juan D. Tardós 翻译:韩昊旻 审核:郑卓祺 编辑:徐武民 周平 欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权 摘要 ORB-SLAM2是基于单目,双目和RGB-D相机的一套完整的SLAM方案。它能够实现地图重用,回环检测和重新定位的功能。无论是在室内的小型手持设备,还是到工厂环境的无人机和城市里驾驶的汽车,ORB-SLAM2都能够在标准的CPU上进行实时工作。ORB-SLAM2在后端上采用的是基于单目和双目的光束法平差优化(BA)的方式,这个方法允许米制比例尺的轨迹精确度评估。此外,ORB-SLAM2包含一个轻量级的定位模式,该模式能够在允许零点漂移的条件下,利用视觉里程计来追踪未建图的区域并且匹配特征点。 我们用29个广泛使用的公共数据测试的结果显示,在大多数情况下,本文方案比此前方案精度更高,此外,我们开源了ORB-SLAM2源代码,不仅仅是为了整个SLAM领域,同时也希望能够为其他领域研究者提供一套SLAM的解决方案。 I

NLP系列(7)_Transformer详解

这一生的挚爱 提交于 2019-12-27 16:31:12
Ref https://jalammar.github.io/illustrated-transformer/ , https://blog.csdn.net/han_xiaoyang/article/details/86560459 编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果,引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大作用。谷歌的Transformer模型最早是用于机器翻译任务,当时达到了SOTA效果。Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。并且Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。在本文中,我们将研究Transformer模型,把它掰开揉碎,理解它的工作原理。 正文: Transformer由论文《Attention is All You Need》提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。 在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。 Attention is All