自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

皮皮鲁的AI星球

大数据和人工智能

  • 博客(37)
  • 收藏
  • 关注

原创 二维卷积层入门:卷积运算、填充与步幅、输入输出通道

微信公号:ilulaoshi / 原文发表在我的个人网站:https://lulaoshi.info/machine-learning/convolutional/two-dimension-convolution-layer.html转载请引用我的个人网站链接,谢谢!卷积神经网络(Convolutional Neural Network,CNN)在图像领域应用非常广泛。区别于普通的全连接前馈神经网络,卷积神经网络是含有卷积层(Convolutional Layer)的神经网络。本文解释二维卷积层的.

2020-12-21 09:36:05 18525 2

原创 批量归一化(BatchNorm)加速深度网络训练

微信公号:ilulaoshi / 原文发表在我的个人网站:https://lulaoshi.info/machine-learning/convolutional/batch-normalization.html转载请引用我的个人网站链接,谢谢!深度神经网络很难训练。因为深度神经网络中网络层数太多,在训练过程中,模型参数的更新会引起靠近输出侧各层的输出结果发生剧烈的变化。Google 将这一现象总结为Internal Covariate Shift(ICS),具体而言,有如下表现:靠近输出侧的各.

2020-12-18 16:39:45 1061 1

原创 Flink如何解决端到端Exactly-Once的一致性

故障恢复与一致性保障某条数据投递到某个流处理系统后,该系统对这条数据只处理一次,提供Exactly-Once的保障是一种理想的情况。如果系统不出任何故障,那简直堪称完美。然而现实世界中,系统经常受到各类意外因素的影响而发生故障,比如流量激增、网络抖动、云服务资源分配出现问题等。如果发生了故障,Flink重启作业,读取Checkpoint中的数据,恢复状态,重新执行计算。Flink的State和...

2020-02-23 09:59:15 1258

原创 浅谈Flink分布式运行时和数据流图的并行化

本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理。关于Flink WordCount程序可以参考我之前的文章:读取Kafka实时数据流,实现Flink WordCount。阅读完本文后,读者可以对Flink的分布式运行时有一个全面的认识。1 Flink数据流图简介1.1 Flink作业的逻辑视图在大数据领域,词频统计(WordCount)程序就像是一个编...

2020-02-17 07:32:59 1068 1

原创 Flink入门:读取Kafka实时数据流,实现WordCount

本文主要介绍Flink接收一个Kafka文本数据流,进行WordCount词频统计,然后输出到标准输出上。通过本文你可以了解如何编写和运行Flink程序。代码拆解首先要设置Flink的执行环境:// 创建Flink执行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(...

2020-02-15 12:11:49 1254 1

原创 Java函数式编程快速入门: Lambda表达式与Stream API

函数式编程(Functional Programming)是一种编程范式。它已经有近60年的历史,因其更适合做并行计算,近年来开始受到大数据开发者的广泛关注。Python、JavaScript等当红语言对函数式编程支持都不错,Scala更是以函数式编程的优势在大数据领域攻城略地,即使是老牌的Java为了适应函数式编程,也加大对函数式编程的支持。未来的程序员或多或少都要了解一些函数式编程思想。本文抛...

2020-02-14 17:03:31 302

原创 Java/Scala 泛型快速入门教程

泛型(Generics)是强类型编程语言中经常使用的一种技术。很多框架的代码中都会大量使用到泛型,比如在Java中我们经常看到的:List<String> strList = new ArrayList<String>();List<Double> doubleList = new LinkedList<Double>();在这段代码中,Ar...

2020-02-13 16:59:06 305

原创 聊聊Java/Scala的继承和多态

继承和多态是现代编程语言最为重要的概念。继承和多态允许用户将一些概念进行抽象,以达到代码复用的目的。本文用一些例子快速回顾一下Java/Scala的继承和多态。继承的数据建模继承在现实世界中无处不在。比如我们想描述动物以及他们的行为,可以先创建一个动物类别,动物类别又可以分为狗和鱼,这样的一种层次结构其实就是编程语言中的继承关系。动物类涵盖了每种动物都有的属性,比如名字、描述信息等。从动物类...

2020-02-13 06:17:30 463

原创 Flink Broadcast State实战案例:电商平台用户行为模式分析

Broadcast State是Flink 1.5引入的功能,本文将跟大家分享Broadcast State的潜在使用场景,并使用电商用户行为分析的例子来演示Broadcast State的使用方法。关于Flink状态的基本原理,Keyed State和Operator State的使用方法,可以参考我之前的文章:Flink状态详解。本文代码已上传到github:https://github.c...

2020-02-07 16:32:43 809 1

原创 ProcessFunction:Flink最底层API使用教程

之前提到的一些算子和函数能够进行一些时间上的操作,但是不能获取算子当前的Processing Time或者是Watermark时间戳,调用起来简单但功能相对受限。如果想获取数据流中Watermark的时间戳,或者在时间上前后穿梭,需要使用ProcessFunction系列函数,它们是Flink体系中最底层的API,提供了对数据流更细粒度的操作权限。Flink SQL是基于这些函数实现的,一些需要高...

2020-02-05 16:39:38 643

原创 Flink Checkpoint机制原理剖析与参数配置

在Flink状态管理详解这篇文章中,我们介绍了Flink的状态都是基于本地的,而Flink又是一个部署在多节点的分布式引擎,分布式系统经常出现进程被杀、节点宕机或网络中断等问题,那么本地的状态在遇到故障时如何保证不丢呢?Flink定期保存状态数据到存储上,故障发生后从之前的备份中恢复,整个被称为Checkpoint机制,它为Flink提供了Exactly-Once的投递保障。本文将介绍Flink的...

2020-02-01 16:23:14 1437

原创 Flink状态管理:Keyed State和Operator List State深度解析

本文将重点跟大家讲解Flink的状态管理机制,包括状态要解决的问题、Flink几种不同类型的状态、Keyed State和Operator List State的使用方法等。相关代码参见的github:https://github.com/luweizheng/flink-tutorials。图片文字均为原创,转载请联系本专栏。为什么要管理状态有状态的计算是流处理框架要实现的重要功能,因...

2020-01-28 10:06:47 2208 3

原创 Flink时间系列:Event Time下如何处理迟到数据

Event Time语义下我们使用Watermark来判断数据是否迟到。一个迟到元素是指元素到达窗口算子时,该元素本该被分配到某个窗口,但由于延迟,窗口已经触发计算。目前Flink有三种处理迟到数据的方式:直接将迟到数据丢弃将迟到数据发送到另一个流重新执行一次计算,将迟到数据考虑进来,更新计算结果将迟到数据丢弃如果不做其他操作,默认情况下迟到数据会被直接丢弃。将迟到数据发送到另外...

2020-01-20 04:47:15 638

原创 Flink进阶教程:如何在两个DataStream上进行Join操作

批处理经常要解决的问题是将两个数据源做关联Join操作。比如,很多手机APP都有一个用户数据源User,同时APP会记录用户的行为,我们称之为Behavior,两个表按照userId来进行Join。在流处理场景下,Flink也支持了Join,只不过Flink是在一个时间窗口上来进行两个表的Join。目前,Flink支持了两种Join:Window Join(窗口连接)和Interval Joi...

2020-01-18 15:44:57 2614 1

原创 Flink窗口全解析:三种时间窗口、窗口处理函数使用及案例

我们经常需要在一个时间窗口维度上对数据进行聚合,窗口是流处理应用中经常需要解决的问题。Flink的窗口算子为我们提供了方便易用的API,我们可以将数据流切分成一个个窗口,对窗口内的数据进行处理。本文将介绍如何在Flink上进行窗口的计算。一个Flink窗口应用的大致骨架结构如下所示:// Keyed Windowstream .keyBy(...) ...

2020-01-11 22:44:35 3963 1

原创 隐私、资本泡沫成焦点,大数据和AI从业者应该了解的2020六大趋势

包括阿里巴巴达摩院在内的全球顶级科研机构纷纷对2020年的科技行业做出了预测,过去的一年,大数据和AI行业继续蓬勃发展:硬件层面:各种专用芯片开始提供算力支持,5G带来更多潜在应用。软件层面:各巨头公司布局计算框架、云服务,为开发者提供更简单易用的基础服务。技术之外:隐私问题和资本泡沫开始引起广泛重视。个人数据隐私进一步得到保护一直以来,中国人对个人的数据隐私并不敏感,但随着一些隐私...

2020-01-09 14:43:41 485

原创 Flink基础教程:时间语义、Event Time和Watermark机制原理与实践

在流处理中,时间是一个非常核心的概念,是整个系统的基石。比如,我们经常会遇到这样的需求:给定一个时间窗口,比如一个小时,统计时间窗口的内数据指标。那如何界定哪些数据将进入这个窗口呢?在窗口的定义之前,首先需要确定一个应用使用什么样的时间语义。本文将介绍Flink的Event Time、Processing Time和Ingestion Time三种时间语义,接着会详细介绍Event Time和W...

2020-01-06 11:19:05 1469

原创 深度解析Flink flatMap算子的自定义方法(附代码例子)

之前的四篇文章对Flink常用的算子进行了详细讲解并附上了大量使用案例:Flink单数据流基本转换:map、filter、flatMapFlink基于Key的分组转换:keyBy、reduce和aggregationsFlink多数据流转换:union和connectFlink并行度和数据重分配总结下来不难发现,使用Flink的算子必须进行自定义,自定义时可以使用Lambda表达式,...

2019-12-31 16:47:06 5209

原创 Flink进阶教程:数据类型和序列化机制简介

几乎所有的大数据框架都要面临分布式计算、数据传输和持久化问题。数据传输过程前后要进行数据的序列化和反序列化:序列化就是将一个内存对象转换成二进制串,形成网络传输或者持久化的数据流。反序列化将二进制串转换为内存对象,这样就可以直接在编程语言中读写和操作这个对象。一种最简单的序列化方法就是将复杂数据结构转化成JSON格式。序列化和反序列化是很多大数据框架必须考虑的问题,在Java和大数据生态圈中,已有...

2019-12-30 11:30:14 1447

原创 Flink零基础教程:并行度和数据重分布

Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数据流基本转换:map、filter、flatMapFlink基...

2019-12-27 10:35:50 1244 1

原创 Flink算子使用方法及实例演示:union和connect

Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数据流基本转换:map、filter、flatMapFlink基于Key的分组...

2019-12-25 23:10:23 2194

原创 Flink算子使用方法及实例演示:keyBy、reduce和aggregations

Flink的Transformation转换主要包括四种:单数据流基本转换、基于Key的分组转换、多数据流转换和数据重分布转换。本文主要介绍基于Key的分组转换,关于时间和窗口将在后续文章中介绍。读者可以使用Flink Scala Shell或者Intellij Idea来进行练习:Flink Scala Shell使用教程Intellij Idea开发环境搭建教程Flink单数...

2019-12-23 18:54:35 2623

原创 Hadoop Spark Kylin...你知道大数据框架名字背后的故事吗?

对软件命名并不是一件容易的事情,名字要朗朗上口,易于记忆,既不能天马行空,又要代表软件本身的功能和创新。本文将历数几款大数据框架及其创始背后的故事。Hadoop:最具童心2004年,Apache Hadoop(以下简称Hadoop)的创始人Doug Cutting和Mike Cafarella受MapReduce编程模型和Google File System等论文的启发,对论文中提及的思想进行...

2019-12-22 10:26:42 466

原创 Flink零基础学习教程:map、filter和flatMap算子实例详解

本文将对Flink Transformation中各算子进行详细介绍,并使用大量例子展示具体使用方法。Transformation各算子可以对Flink数据流进行处理和转化,是Flink流处理非常核心的API。如之前文章所述,多个Transformation算子共同组成一个数据流图。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDnkbPZD-157655402...

2019-12-17 11:41:37 3456

原创 最大似然估计:从概率角度理解机器学习

最大似然估计是机器学习中最常用的参数估计方法之一。整个建模过程需要一个似然函数来描述在不同模型参数下真实数据发生的概率,似然函数是关于模型参数的函数。最大似然估计就是寻找最优参数,使得观测数据发生的概率最大、统计模型与真实数据最相似。本专栏之前的文章介绍了线性回归以及最小二乘法的数学推导过程。对于一组训练数据,使用线性回归建模,可以有不同的模型参数来描述数据,这时候可以用最小二乘法来选择最优...

2019-12-13 16:21:19 864

原创 Flink零基础实战教程:股票价格数据流实时处理

之前的文章《10行Flink WordCount程序背后的万字深度解析,读懂Flink原理和架构》使用WordCount展示了Flink程序的基本结构,本文将以股票价格来演示如何使用Flink的DataStream API。通过本文,你可以学到:定义相关数据结构。Flink流处理程序的骨架。Flink的执行环境概念。自定义Source、设置时间戳和Watermark。数据结构Fli...

2019-12-12 10:33:10 2517 1

原创 Kafka能做什么?十分钟构建你的实时数据流管道

本文将对Kafka做一个入门简介,并展示如何使用Kafka构建一个文本数据流管道,通过本文,读者可以了解一个流处理数据管道(Pipeline)的大致结构:数据生产者源源不断地生成数据流,数据流通过消息队列投递,数据消费者异步地对数据流进行处理。Kafka简介2010年,LinkedIn开始了其内部流数据处理平台的开发,2011年将该系统捐献给了Apache基金会,取名Apache Kafka(...

2019-12-08 07:01:28 807

原创 批处理衰落,流处理兴起,大数据处理平台从Lambda到Kappa的演进

流处理引擎经历了从Storm到Spark Streaming再到Flink的三代的技术迭代,大数据处理也随之经历了从Lambda架构到Kappa架构的演进。本节以电商平台的数据分析为例,来解释大数据处理平台如何支持企业在线服务。电商平台会将用户在APP或网页的搜索、点击和购买行为以日志的形式记录下来,用户的各类行为形成了一个实时数据流,我们称之为用户行为日志。Lambda架构当以Storm为...

2019-12-04 11:28:14 738

原创 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史!

当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题。本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后介绍一些流行的大数据技术和组件,读者能够通过本文了解大数据的概念、处理方法和流行技术。什么是大数据?大数据,顾名思义,就是拥有庞大体量的数据。关于什么是大数据,如何定义大数据,如何使用大数据等一...

2019-11-29 14:07:13 1603

原创 机器学习:一文读懂线性回归的数学原理

线性回归是统计学中最基础的数学模型,几乎各个学科的研究中都能看到线性回归的影子,比如量化金融、计量经济学等;当前炙手可热的深度学习也一定程度构建在线性回归基础上。因此,每个人都有必要了解线性回归的原理。线性回归对已有数据进行建模,可以对未来数据进行预测。有些人觉得线性回归太过简单,甚至不屑于称之为机器学习;另外一些人觉得很多编程库已经对线性回归做了封装,使用时调用一下函数就好,不必了解太多数...

2019-11-28 15:42:41 736

原创 金融领域GPU加速案例:使用Python Numba加速B-S期权估值模型

很多领域尤其是机器学习场景对GPU计算力高度依赖,所幸一些成熟的软件或框架已经对GPU调用做了封装,使用者无需使用CUDA重写一遍,但仍需要对GPU计算的基本原理有所了解。对于一些无法调用框架的场景,当数据量增大时,非常有必要进行GPU优化。量化金融是一个非常好的应用GPU并行编程的领域。本文为英伟达GPU计算加速系列的第四篇,主要基于前三篇文章的内容,以金融领域期权估值案例来进行实战练习。...

2019-11-26 17:46:27 2199

原创 Flink Scala Shell:使用交互式编程环境学习和调试Flink

交互式编程环境:REPL当前最著名的交互式编程环境莫属Jupyter Notebook了,程序员可以启动一个交互的Session,在这Session中编写代码、执行程序、获取结果,所见即所得。交互式编程的优势包括:快速启动一个程序:程序员不需要“编译、打包、执行”这一套复杂过程,只需要开启一个交互Session,敲下代码,直接得到结果,非常适合验证一段代码的结果。直接获得程序反馈:使用p...

2019-11-22 09:44:16 642

原创 Python Numba | 多流和共享内存CUDA优化技术介绍和代码示例

本文为英伟达GPU计算加速系列的第三篇,前两篇文章为:AI时代人人都应该了解的GPU知识:主要介绍了CPU与GPU的区别、GPU架构、CUDA软件栈简介。超详细Python Cuda零基础入门教程:主要介绍了CUDA核函数,Thread、Block和Grid概念,内存分配,并使用Python Numba进行简单的并行计算。阅读完前两篇文章后,相信读者应该能够将一些简单的CPU代...

2019-11-21 15:19:43 5071 6

原创 中文领域最详细的Python版CUDA入门教程

本系列为英伟达GPU入门介绍的第二篇,主要介绍CUDA编程的基本流程和核心概念,并使用Python Numba编写GPU并行程序。为了更好地理解GPU的硬件架构,建议读者先阅读我的第一篇文章。GPU硬件知识和基础概念:包括CPU与GPU的区别、GPU架构、CUDA软件栈简介。GPU编程入门:主要介绍CUDA核函数,Thread、Block和Grid概念,并使用Python Numba进...

2019-11-20 10:29:10 57098 11

原创 GPU硬件知识和基础概念 : AI时代程序员都应该了解的GPU基础知识

金融建模、自动驾驶、智能机器人、新材料发现、脑神经科学、医学影像分析…人工智能时代的科学研究极度依赖计算力的支持。提供算力的各家硬件芯片厂商中,最抢镜的当属英伟达Nvidia了。这家做显卡起家的芯片公司在深度学习兴起后可谓红得发紫,如果不聊几句GPU和英伟达,都不好意思跟别人说自己是做人工智能的。那么,英伟达的GPU是如何加速计算呢?本系列将介绍GPU计算加速的一些基础知识:GPU硬件知识和基...

2019-11-19 10:52:47 5016 1

原创 深入浅出:10行Flink WordCount程序背后的万字深度解析,读懂Flink原理和架构

要想熟练掌握一个大数据框架,仅仅是学习一些网络上的样例程序是远远不够的,我们必须系统地了解它背后的设计和运行原理。本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理。关于Flink WordCount程序可以参考我之前的文章:十分钟搭建第一个Flink程序。原创不易,转载请注明出处。对大数据和机器学习感兴趣的朋友可以加我的微信 aistevelu,相互交流学习。本文内容...

2019-11-15 18:17:39 1833

原创 计算机基础:源代码如何被计算机执行

计算机芯片的物理特性决定了它只能接受二进制指令。不同计算机芯片的指令集不同。高级编程语言需要转化成二进制机器语言才能被计算机所执行。编译型语言需要使用编译器经过编译和连接生成可执行文件,解释型语言需要使用解释器解释源代码。解释型语言更容易上手,但是运行速度更慢,必要时要使用C/C++重写或使用JIT技术加速。

2019-11-15 17:13:10 4273

空空如也

空空如也

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

TA关注的人

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