自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Transformer模型实现与解析

  Transformer是一个利用注意力机制来提高模型训练速度的模型,其的核心思想是自注意力机制(self-attention)——能注意输入序列的不同位置以计算该序列的表示的能力。  参考链接:https://www.tensorflow.org/tutorials/text/transformer?hl=zh-cn  模型结构图如下:  这是一个典型的seq2seq模型,结构分为encoder和decoder两部分。左边为encoder,主要由一个多头的注意力层和一个前馈网络组成;右边的为decode

2022-06-04 21:12:13 913

原创 基于注意力的seq2seq模型

基于注意力的seq2seq模型简介   相较与普通的seq2seq模型,其多了一个注意力层。简单来说就是在encoder-decoder中,不再是由encoder直接将数据传给decoder,而是经过一个注意力层对encoder的输出进行加权,区分出对当前预测重要的数据,再根据这些重要的数据进行预测。模型结构 参考链接:https://www.tensorflow.org/tutorials/text/nmt_with_attention  模型结构如图:  模型说明:   模型与文档Se

2022-05-27 21:40:53 736

原创 python离线安装依赖包

python离线安装依赖包简介  python安装依赖包通常是使用pip命令在网络上直接下载依赖包,然后安装。但在没有网络的环境下这种方式不太好用,这时一般会先把安装包下载到本地,然后再使用pip的本地安装模式安装。导出依赖包 在下载之前,最好先确定需要下载的依赖包,pip提供了freeze命令可以将当前环境下安装的包导入到文件中。命令如下:pip freeze> ./requirements.txt下载安装包 安装包可以直接去Pypi.org里面下载,但是如果下载的安装包还依赖别的安

2022-05-12 14:27:43 4777

原创 Hadoop源码分析(26)

Hadoop源码分析(26)ZKFC源码分析 在文档(25)中分析了zkfc的启动过程。在zkfc的启动过程中,其会连接zookeeper与namenode。并对namenode进行健康检查。  namenode的健康检查,实际是通过RPC调用namenode自身的方法来进行健康检查。健康检查的主要的方法是monitorHealth方法,同时在namenode的启动中分析了用于处理namenode的RPC服务的类为:NameNodeRpcServer。该方法在namenode的实现如下: pu

2022-05-09 16:36:29 725

原创 Hadoop源码分析(25)

Hadoop源码分析(25)ZKFC源码分析  从文档(4)到文档(24),详细分析了namenode的启动流程。最后namenode会以standby模式启动。但在standby模式下的namenode是不会对外提供服务的,还必须要选择一台namenode将其转换为active模式,然后active的namenode对外提供服务。 这里将standby模式下的namenode转换为active模式,是由ZKFC来执行的。这里先从zkfc的启动开始分析。   与namenode相同,在bin目录

2022-05-09 15:37:05 643

原创 Hadoop源码分析(24)

Hadoop源码分析(24)namenode启动  在文档(5)到文档(8)分析namenode的启动方法,其本质是是创建了一个namenode对象。而在创建这两个namenode对象的时候有一个重要的方法:initialize方法,这个方法会加载namenode持久化到磁盘上的元数据信息,恢复namenode关闭前的状态,然后启动namenode需要的服务。 从文档(9)到文档(23)详细分析了namenode加载元数据的方法,其主要分为两部分:加载FSImage和Editlog。其中FSImag

2022-05-09 14:45:26 176

原创 Hadoop源码分析(23)

Hadoop源码分析(23)加载EditLog日志  在文档(22)中分析了加载FSImage的方法,在这个方法中最终是将FSImage中的信息加载成INodeFile和INodeDirector对象,并建立的其目录结构。这里接着解析加载editLog的方法。  加载editlog的方法依然是在loadFSImage方法中被调用的,调用的相关代码如下:  与FSImage相同editlog也是一个二进制文件,其内容如下:  同样这个文件也可以使用命令将其转换成xml文件,命令如下: hd

2022-05-09 11:08:32 250

原创 Hadoop源码分析(22)

Hadoop源码分析(22)###1、 加载FSImage文件  在之前文档中分析了namenode的启动流程,其中namenode启动主要有两个任务:其一是加载元数据,其二是启动相关的服务。其中加载元数据在文档(10)中分析了其最终会调用FSImage类的loadFSImage方法来加载元数据。这个方法大致可以分为5个部分:是查找fsimage文件;初始化editlog;加载editlog流;加载fsimage文件;执行editlog。随后的文档依次分析了:查找FSImage文件、初始化editlo

2022-05-09 10:23:31 825

原创 linux下安装python3

liunx下安装python3查看是否安装python  使用which命令which pythonwhich python3  命令结果如下:  这里的python是系统自带的,python3正常情况下是没有的,按照本教程安装好python3并设置好软链后,便可以查询到上述结果。###安装依赖环境  使用yum安装,命令如下:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel rea

2022-05-09 08:58:17 318

原创 Hadoop源码分析(21)

Hadoop源码分析(21)读取journalnode数据  在文档(20)中分析journalnode是如何执行远程调用的getEditLogManifest方法的。当journalnode执行完成后会将结果返回个客户端即namenode。  这里接着从最初调用getEditLogManifest的selectInputStreams方法内容如下:public void selectInputStreams(Collection<EditLogInputStream> streams

2022-05-05 16:37:53 279

原创 Hadoop源码分析(20)

Hadoop源码分析(20)1、 namenode读取journalnode数据  在文档(12)中分析到了namenode加载元数据的时候分为两部分:editlog和FSImage。在加载editlog的时候,由于配置了HA模式,namenode需要从journalnode的中读取editlog。于是文档(12)分析了namenode读取journalnode的日志的方法:selectInputStreams方法。这个方法会先调用一个getEditLogManifest方法获取journalnode中

2022-05-05 15:35:46 406

原创 Hadoop源码分析(19)

Hadoop源码分析(19)1、 RPC解析  在文档(18)中解析了RPC服务端的reader线程的使用情况。reader线程的主要作用是从listener中接收的到的channel中读取数据并将其封装车一个call对象并存储到callQueue中。  这里继续分析服务端剩下的两个线程类handler和responder。先从handler开始,其run方法如下: public void run() { LOG.debug(Thread.currentThread().getN

2022-04-29 16:52:51 1559

原创 Hadoop源码分析(18)

Hadoop源码分析(18)1、 RPC分析 在文档(17)中分析了在RPC server在启动的时候会启动四类线程:listener,reader,handler,responder。并详细解析listener的运行过程。   listener负责监听端口,当接收到请求后listener会将请求封装成connection,并添加到reader的队列中。这里接着分析reader的运行过程。其启动后的run方法如下: @Override public void run() {

2022-04-26 16:52:46 115

原创 Hadoop源码分析(17)

Hadoop源码分析(17)1、 RPC解析  在文档(16)中分析了RPC的服务端的情况,并以journalnode为例解析了journalnode在启动是创建RPC服务的代码。在journalnode中会调用RPC的Builder来创建server,而builder会通过engine类的getserver方法来创建server。  在文档(16)中分析到创建的server实际是继承于ipc包下的Server类。而在其创建的时候会使用super方法逐步调用到父类的构造方法,调用的ipc下的Serv

2022-04-26 14:39:40 1220

原创 Hadoop源码分析(16)

Hadoop源码分析(16)1、 RPC解析 在文档(15)中解析了实际进行远程调用client类的call方法。在该文档中提到的其本质是使用java的NIO与远端的服务器进行连接。并通过channel将需要执行的方法的数据发送过去,然后等待远端将执行结果返回给客户端。   hdfs的组件中很多都有RPC的server端,之前文档分析到namenode启动的时候会从journalnode中读取其存储的editlog,因此需要使用RPC获取其存储的editlog列表。所以这里按照分析的思路,以jour

2022-04-26 10:36:42 127

原创 Hadoop源码分析(15)

Hadoop源码分析(15)1、 RPC分析  在文档(14)中分析了RPC客户端创建代理对象的过程。在创建代理对象的时候首先会查询该接口使用的engine类,然后使用该engine类来创建代理对象。文档(14)中使用的engine类是ProtobufRpcEngine类,它在创建代理对象的时候使用的是动态代理的方式来创建对象的。创建的代理对象在实际执行方法时,执行的是传入的实现了InvocationHandler接口的对象的invoke方法。  在文档(14)中分析上述的invoke方法,

2022-04-26 09:31:19 228

原创 Hadoop源码分析(14)

Hadoop源码分析(14)1、 RPC解析 在文档(13)中介绍HDFS的RPC,并演示了如何直接使用HDFS的RPC。在HDFS的源码中使用RPC的方式与文档(13)中使用的方式相同。对于RPC的客户端来说都是需要获取一个代理对象,然后利用代理对象将数据发送给Server端。 在文档(12)中分析到了namenode在启动的时候,需要加载元数据。而元数据分为两类FSImage和EditLog。对于配置了高可用的namenode来说editLog存储在配置的journalnode中。而na

2022-04-25 10:02:10 176

原创 Hadoop源码分析(13)

Hadoop源码分析(13)1、 HDFS远程调用(RPC)分析  在文档(12)中分析了在HA状态下,读取editlog的操作。最后分析到了它会通过IPCLoggerChannel对象新建一个线程,让这个线程去执行RPC操作,通过RPC获取journalnode的数据。RPC简介  RPC即远程调用。RPC的应用场景很简单。假设有AB两台机器,两台机器上运行着两个不同的程序。这时A需要调用一个方法C,但是方法C是运行在B上的。因此,A需要将要执行的方法名和执行需要的参数传给B,然后B找

2022-04-24 15:39:35 941

原创 Hadoop源码分析(12)

Hadoop源码分析(12)1、 journalnode客户端  在文档(11)中分析了初始化editlog的方法。在初始化之前其会根据集群的配置状态选择不同的方式来进行初始化。在HA状态下,其会调用一个initJournals方法来进行初始化,这个方法会创建一个journalset对象,并创建journalmanager对象传入journalset中,进行统一管理。在文档(10)中分析了的在初始化完editlog后,接下来就要利用editlog获取操作日志。在文档(10)中实现这个操作的是

2022-04-24 15:08:21 1544

原创 Hadoop源码分析(11)

初始化editlog  在文档(10)中解析了FSImage类的loadFSImage方法,这个方法主要用来加载元数据。它大致可以分为5个部分:是查找fsimage文件;初始化editlog;加载editlog流;加载fsimage文件;执行editlog。  这里继续分析初始化editlog的initEditLog方法,其内容如下:public void initEditLog(StartupOption startOpt) throws IOException { Precondi.

2021-11-08 18:27:01 773

原创 Hadoop源码分析(10)

namenode加载元数据  在文档(9)中分析namenode加载元数据的函数调用关系。最终其会调用FSImage类的loadFSImage方法来加载元数据。这个方法是真正加载数据的方法,其内容如下:private boolean loadFSImage(FSNamesystem target, StartupOption startOpt, MetaRecoveryContext recovery) throws IOException { final boole

2021-11-08 17:59:46 606

原创 Hadoop源码分析(9)

Hadoop源码分析(9)namenode加载元数据 在文档(8)中分析了namenode的构造方法,其中的initialize方法会加载namenode的元数据并启动一些服务。其中加载原数据是通过调用FSNamesystem类的loadFromDisk方法来实现的。在这个方法中会创建FSImage对象,FSNamesystem对象,并使用FSNamesystem对象加载元数据。 在文档(8)中详细分析了FSImage的创建,这里继续分析FSNamesystem对象的创建。其构造方法如下:

2021-11-08 17:34:04 812

原创 Hadoop源码分析(8)

1、 namenode启动在文档(5)中解析了namenode启动的入口方法:namenode类的main方法,它会掉用createNameNode方法,这个方法会创建一个configuration对象,然后解析传入的参数,最后根据参数不同执行不同的方法(一般情况是默认的是创建namenode类)。在文档(6)和(7)中解析了创建configuration的具体过程,这里先跳过解析参数的方法,继续分析创建namenode的方法,创建namenode的代码片段如下:重点是最后一行代码:new name

2021-11-08 17:09:34 929

原创 Hadoop源码分析(7)

1、 hadoop配置文件分析在文档(6)中分析了hadoop对配置文件中弃用key的处理,并分析在使用配置文件时调用的set方法,该方法会调用getProps方法获取配置文件,然后将数据设置到配置文件中。getProps方法详情如下:protected synchronized Properties getProps() { if (properties == null) { properties = new Properties(); Map<String,

2021-11-08 16:57:30 966

原创 Hadoop源码分析(6)

1、 hadoop配置文件处理在(5)中分析了namenode的启动,在创建namenode对象前,会先创建一个HdfsConfiguration对象。其代表了hadoop对配置文件的处理。(5)中分析到了HdfsConfiguration和其父类Configuration都有一段静态代码块。在HdfsConfiguration的静态代码块中会有一个addDeprecatedKeys方法,这个方法会调用其父类的静态方法addDeprecations,并创建一个包含数据的DeprecationDelta数

2021-11-08 16:52:24 155

原创 YOLO v4网络实现及解析

YOLO v4网络实现及解析简介 yolo是继rcnn后,针对目标检测速度问题提出的另一种框架。其核心思想是利用整张图片作为网络输入,直接在输出层回归bbox的位置和所述类别。网络架构 目标检测一般由两部分组成:backbone和head。其中backbone是主干网络主要用来提取图像的特征,head部分根据图像特征来进行目标检测。对于head部分,通常分为两类:one-stage和two-stage的目标检测器。Two-stage的目标检测器的代表是R-CNN系列,它将目标检测分成两步,第

2021-09-23 16:48:37 849

原创 deeplabV3+网络实现及解析

deeplabV3+网络实现及解析简介  DeepLab V3+通过添加一个简单而有效的解码器模块,从而扩展了DeepLab V3,以优化分割结果,尤其是沿对象边界的分割结果。 我们进一步探索Xception模型,并将深度可分离卷积应用于Atrous空间金字塔池和解码器模块,从而形成更快、更强大的编码器-解码器网络。 网络结构  DeepLab V3+的主要模型结构如下图:  这里的结构分为了两部分:encoder和decoder。encoder中连接的第一个模块是DCNN,他代表的是

2021-09-08 11:40:45 6969 4

原创 UNet网络实现及解析

UNet网络实现及解析简介 Unet是受到FCN启发针对医学图像做语义分割,且可以利用少量的数据学习到一个对边缘提取十分鲁棒的模型,在生物医学图像分割领域有很大作用。网络结构  网络结构如下图:  如上图其结构如英文字母u,所以被命名为unet。其建立在FCN的架构上,首先是从左侧输入开始的一系列卷积层,这里主要有5层,目的是用来提取图片的特征,这里可以使用vgg或者resnet等经典的特征提取网络。然后是右侧的结构,首先从最下层开始将提取出的特征进行上采样,上采样后的特征与其上一层的

2021-09-06 14:48:13 6930

原创 Mask RCNN使用及实现详解(6)

模型结构1、 FPN结构在文档模型的输入与数据加载中,解析了模型的输入,并详细解析了模型是如何通过labelme标注的数据来生成这些输入。解析完模型输入之后,接下来便是FPN网络,即特征金字塔网络。特征金字塔网络主要用于提取特征。通常的卷积网络是不断地堆叠卷积层然后利用最后一个卷积层的输出来进行分类等操作,而这种方法对于要识别图像中的小目标来说效果不是很好。为了解决这个问题使用特征金字塔网络,它在传统的卷积上多了一步上采样,将卷积的结果进行上采样,上采样的次数与卷积的次数相对应。大致示意如下图:特

2021-08-31 21:39:37 818 1

原创 Mask RCNN使用及实现详解(5)

模型的输入与数据加载1、 模型输入从模型的训练与预测中可以看到实际创建的模型是一个名为MaskRCNN的类相关代码片段如下:训练创建模型的代码预测创建模型的代码这个类的初始化方法如下:def __init__(self, mode, config, model_dir): """ mode: Either "training" or "inference" config: A Sub-class of the Config class model_dir: D

2021-08-31 21:24:23 1773

原创 Mask RCNN使用及实现详解(4)

训练与预测1、 训练自定义数据集自定义数据集根据文档数据准备中的方式制作自定义数据集。制作好的数据集目录格式如下:环境配置下载模型链接:https://github.com/matterport/Mask_RCNN下载预训练模型链接:https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5环境配置该模型是用python3编写的,只需配置好python环境和相关依赖库便可。依赖库可以使

2021-08-31 21:04:58 703 1

原创 Mask RCNN使用及实现详解(3)

数据准备1、 环境配置标注软件:labelmelabelme有python的版本,可以使用pip 安装,安装命令如下:pip install labelme2、 图像标注安装完成后可以直接在命令行中输入labelme启动,启动后界面如下:labelme初始界面点击右上角opentdir图标,选择图片所在的文件夹,打开图片:opendir按钮打开图片然后点击create ploygons图标开始标注:create polygons图标标注页面标注完成后会弹出标签页,选择标

2021-08-31 20:57:58 499

原创 Mask RCNN使用及实现详解(2)

模型架构1、 简介Mask RCNN是faster RCNN的扩展形式,faster RCNN是一种目标检测算法,可以有效的检测图像中的目标。mask RCNN在faster RCNN的基础上还能为每个实例生成高质量的分割掩码。2、 模型架构开源实现:https://github.com/matterport/Mask_RCNN网络架构首先是以resnet为骨架的特征金字塔网络(FPN),这里主要是利用resnet网络来提取图像的特征。相较有普通的resnet网络来说,FPN网络并不是是直接使

2021-08-31 20:48:35 495

原创 Mask RCNN使用及实现详解(1)

文档目录文档主要分为以下几个部分:(1) 模型架构(2) 数据准备(3) 训练与预测(4) 模型的输入与数据加载(5) 模型结构

2021-08-31 20:44:36 241

原创 Hadoop源码分析(5)

1、 namenode启动在文档(3)中分析了hadoop的启动文件,其中提到了namenode启动的时候调用的类为org.apache.hadoop.hdfs.server.namenode.NameNode。其main方法的内容如下: public static void main(String argv[]) throws Exception { if (DFSUtil.parseHelpArgument(argv, NameNode.USAGE, System.out, true)) {

2021-02-21 19:37:21 133

原创 Hadoop源码分析(4)

1、 hdfs架构在文档(3)中出现了与hdfs相关的数个服务。如果在hadoop配置时写的配置文件不同,启动的服务也有所区别。按照文档(2)中的配置,会启动以下服务:namenode、journalnode、datanode、zkfc。其关系如图:从图中可以看出namenode是绝对的中心节点,所有的节点都会和它进行交互。图中namenode有两台,一台为active,另一台为standby。其中active是正常提供namenode服务,standby不对外提供服务,它负责及时同步active的数

2021-02-21 19:29:42 107 1

原创 Hadoop源码分析(3.5)

1、 hadoop远程debug从文档(3)中可以知道hadoop启动服务的时候最终都是通过java命令来启动的,其本质是一个java程序。在研究源码的时候debug是一种很重要的工具,但是hadoop是编译好了的代码,直接在liunx中运行的,无法象普通的程序一样可以直接在eclipse之类的工具中直接debug运行。对于上述情况java提供了一种远程debug的方式。这种方式需要在java程序启动的时候添加以下参数:-agentlib:jdwp=transport=dt_socket,server

2021-02-21 19:26:32 173

原创 Hadoop源码分析(3)

1、 启动hadoop的启动是通过其sbin目录下的脚本来启动的。与启动相关的叫脚本有以下几个:start-all.sh、start-dfs.sh、start-yarn.sh、hadoop-daemon.sh、yarn-daemon.sh。其中hadoop-daemon.sh是用来启动与hdfs相关的服务的,yarn-daemon.sh是用来启动和yarn相关的服务。start-dfs.sh是用来启动hdfs集群的,start-yarn.sh是用来启动yarn集群,start-all.sh是用来启动yar

2021-02-21 19:20:49 385

原创 Hadoop源码分析(2)

安装hadoop有好几种方式,以下按照hdfs高可用的方式来安装。1、 创建用户命令:useradd -m bigdatapasswd bigdata2、 安装jdk解压:tar -zvf jdk-8u191-linux-x64.tar.gz修改环境变量JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64JRE_HOME=/usr/lib/jvm/java-8-openjdk-arm64/jreCLASSPATH=:$JAVA_HOME/lib/d

2021-02-21 19:10:11 145

原创 Hadoop源码分析(1)

1、 简介Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop起源于谷歌发布的三篇论文:GFS、MapReduce、BigTable。其中GFS是谷歌的分布式文件存储系统,MapReduce是基于这个分布式文件存储系统的一个计算框架,BigTable是一个分布式的数据库。hadoop实现了论文GFS和MapReduce中的内容,Hbase的实现了参考了论文BigTable。2、 hadoop架构hadoop主要有三个组件:HDFS、YARN和MapReduce。其中YARN是

2021-02-21 18:54:02 256 1

空空如也

空空如也

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

TA关注的人

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