迭代计算

flink的DataSet算子讲解

喜欢而已 提交于 2019-12-07 20:21:54
本文是已 官方文档 为基础进行个人解释,有错误地方还望多多包涵: https://ci.apache.org/projects/flink/flink-docs-release-1.3/api/scala/index.html#org.apache.flink.api.scala.DataSet 首先启动flink集群模式,再启动./start-scala-shell.sh remote master 8082 启动后,flink会提示你:使用预绑定执行环境来实现批处理或流媒体程序。即: 第一种: Batch - Use the 'benv' variable(批量使用“benv”变量) val dataSet = benv.readTextFile("/path/to/data") dataSet.writeAsText("/path/to/output") benv.execute("My batch program") HINT: You can use print() on a DataSet to print the contents to the shell.(提示:您可以在数据集上使用print()来 将内容打印到shell中。) 第二种: Streaming - Use the 'senv' variable (流式-使用“senv”变量) val

Flink架构、原理与部署测试

*爱你&永不变心* 提交于 2019-12-07 20:21:40
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。 现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为它们所提供的SLA(Service-Level-Aggreement)是完全不相同的:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理。 Flink从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的; 批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的 。 Flink流处理特性: 支持高吞吐、低延迟、高性能的流处理 支持带有事件时间的窗口(Window)操作 支持有状态计算的Exactly-once语义 支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作 支持具有Backpressure功能的持续流模型 支持基于轻量级分布式快照(Snapshot)实现的容错 一个运行时同时支持Batch on Streaming处理和Streaming处理 Flink在JVM内部实现了自己的内存管理 支持迭代计算 支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作

Apache Flink:特性、概念、组件栈、架构及原理分析

試著忘記壹切 提交于 2019-12-07 20:18:36
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时(Flink Runtime),提供支持流处理和批处理两种类型应用的功能。现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为他们它们所提供的SLA是完全不相同的:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。例如,实现批处理的开源方案有MapReduce、Tez、Crunch、Spark,实现流处理的开源方案有Samza、Storm。 Flink在实现流处理和批处理时,与传统的一些方案完全不同,它从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。基于同一个Flink运行时(Flink Runtime),分别提供了流处理和批处理API,而这两种API也是实现上层面向流处理、批处理类型应用框架的基础。 基本特性 关于Flink所支持的特性,我这里只是通过分类的方式简单做一下梳理,涉及到具体的一些概念及其原理会在后面的部分做详细说明。 流处理特性 支持高吞吐、低延迟、高性能的流处理

python条件与循环-循环

主宰稳场 提交于 2019-12-07 07:30:34
while语句 while用于实现循环语句,通过判断条件是否为真,来决定是否继续执行。 一般语法 语法如下: while expression: suite_to_repeat 计数循环 >>> cnt = 0 >>> while(cnt < 9): ... print 'the index is ', cnt ... cnt += 1 ... the index is 0 the index is 1 the index is 2 the index is 3 the index is 4 the index is 5 the index is 6 the index is 7 the index is 8 代码块里包含print和自增语句,将被重复执行,知道cnt不下于9。 无限循环 while True: suite_to_repeat 条件表达式一直为真。 for语句 for语句是python提供的另一个循环机制,可以用于遍历序列,可以用在列表解析和生成器表达式中。 一般语法 for循环会访问一个可迭代对象(例如序列或叠加器)中的所有元素,并在所有条目处理过后结束循环。语法如下: for iter_var in iterable: suite_to_repeat 每次循环,iter_var迭代变量被设置为可迭代对象(序列、迭代器或其他支持迭代的对象)的当前元素

Java中迭代器所引发的思考(List中迭代器的存在一直是使我迷茫的一个点)

℡╲_俬逩灬. 提交于 2019-12-07 05:08:26
   正像 题目所说,我刚开始学Java接触到集合的时候,发现里面有个迭代器,不准确的说应该是我同学告诉我里面有个迭代器,然后说的很屌的样子。But,说实话,我真心觉得这个迭代器的存在简直是不可理解,比Java的泛型还扯淡,没有丝毫存在的价值。里面的迭代我完全可以自己写一个简单方法用来实习嘛,无非就遍历一下集合给我个这么复杂的方式干嘛。当时因为心思浮躁我就自欺欺人的告诉自己这属于一种设计模式,也就自己把自己蒙混过关不再考虑这个我丝毫不能理解的操作了。不过好在最近工作用的底层接口各种迭代器和C++模板搞得我想吐。也终于明白了迭代器真的是一个好的存在。   首先咱们先不去分析Java中的迭代器的好坏,价值不大。Java集合中迭代器的存在真的是没什么太大的价值,不过这并不能怪Java本身,因为就我目前的知识而言,各个语言平台对迭代器的实现无非都是迭代一下集合中的元素,这也是我们在使用迭代器时不能明白他存在的价值的原因。那么来举个例子看一下,咱们来稍微感受一下迭代器的一个完美应用。   现在呢,咱们来写一个斐波那契的实现。具体要求是: 用计算机输出斐波那契数列的前count个元素。    来一种最直观的的实现: static void printFibonacci( int count) { int fibonacci_n1 = 0 ; int fibonacci_n2 = 1 ; //

【论文阅读笔记】DSSD:Deconvolutionl Single Shot Detector

南楼画角 提交于 2019-12-06 21:34:26
论文地址: DSSD:Deconvolutionl Single Shot Detector 论文时间:2017.01发布,无修改 全文概括    DSSD 相对于 SSD 增加部件的思路和 FPN 相似,都是 增加一个 top-down 路径,同时增加一个 skip-connection 横向连接 。在预测时,DSSD 研究了几个 预测模块 (PM,Prediction Module) ,发现在输出的 featupre map 与最终的回归器和分类器之间添加一个 残差模块 会使得检测效果变好。   作者认为,DSSD 添加的 deconvolutional 层能给检测器增加上下文信息,这能让小物体的检测提高不少( 尤其是对于具有特定背景联系的类别 )。   在VOC2007和VOC2012数据集上,当输入图片较小时,如300或321,DSSD和SSD是不如当时最先进的检测算法 R-FCN的,在V2007上,DSSD513 的mAP为81.5,SSD513 的mAP为80.6, R-FCN 的mAP为80.5,DSSD321 的mAP为78.6,SSD321 的mAP为77.1;在COCO数据集上,即使输入图片较小,DSSD的效果也由于R-FCN;在COCO数据集上,DSSD513 达到33.2,R-FCN为29.9; 模型介绍   增加目标的上下文信息,能对小目标的检测提供帮助

卡尔曼滤波

泪湿孤枕 提交于 2019-12-06 14:41:04
卡尔曼滤波的基本思想是,给定一个假设的合理期望值后,结合系统历史的测量情况下,为系统建立当前的测量模型,是一个概率最大化预测。结合历史测量数据并不是保留了漫长的历史数据后给出的结果,而是在系统迭代更新只保留最近的估计模型供下一次迭代使用,但是最近的估计模型都是跟前面的数据有一定的关系,是前面数据的不断迭代实现的预测结果。单就看当时的结果的话,只与上一次模型的预测结果有关,这样的思想简化了计算机的计算能力。卡尔曼滤波的核心是信息融合,包括系统受到的干扰及测量传感器的噪声。根据这些信号预测当前的状态模型,说白了就是一个估计其,下面是它的原理: 对于离散线性时不变系统: 来源: https://www.cnblogs.com/fuzhuoxin/p/11983165.html

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

允我心安 提交于 2019-12-06 12:18:53
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$\beta_m$就是弱学习在强分类器中所占比重,$P$是所有$\alpha_m$和$\beta_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ 用下面的GIF看起来会更加生动 Adaboost基本概念 AdaBoost是典型的Boosting算法,属于Boosting家族的一员。 对于AdaBoost,我们要搞清楚两点: 1、每一次迭代的弱学习$h(x;a_m)$有何不一样,如何学习? 2、弱分类器权值$\beta_m$如何确定

100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

冷暖自知 提交于 2019-12-06 12:18:36
Boosting算法 Boosting是一种用来提高弱分类器准确度的算法,是将“弱学习算法“提升为“强学习算法”的过程,主要思想是“三个臭皮匠顶个诸葛亮”。一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$\beta_m$就是弱学习在强分类器中所占比重,$P$是所有$\alpha_m$和$\beta_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ 用下面的GIF看起来会更加生动 Adaboost基本概念 AdaBoost是典型的Boosting算法,属于Boosting家族的一员。 对于AdaBoost,我们要搞清楚两点: 1、每一次迭代的弱学习$h(x;a_m)$有何不一样,如何学习? 2、弱分类器权值$\beta_m$如何确定

new

偶尔善良 提交于 2019-12-06 12:05:06
目录 迭代器 迭代器介绍 创建一个迭代器 如何判断一个对象是否可以迭代 迭代器的应用场景(斐波那契迭代器实现) 生成器 生成器介绍 创建生成器方法1 创建生成器方法2 总结 迭代器 迭代器介绍 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法: iter() 和 next() 。 字符串,列表或元组对象都可用于创建迭代器: 创建一个迭代器 class Demo(object): def __iter__(self): # 需要返回一个迭代器,否则无法进行for...in循环 # MyIterator 要重写 __next__ 方法以后,它就是一个迭代器 it = MyIterator() return it class MyIterator(object): count = 0 def __next__(self): if self.count < 5: self.count += 1 return 'hello world' else: raise StopIteration # 抛出一个StopIteration异常 d = Demo() # print(isinstance(d, Iterable)) for