目录预训练源码结构简介输入输出源码解析参数主函数创建训练实例下一句预测&实例生成随机遮蔽输出结果一览预训练源码结构简介关于BERT,简单来说,它是一个基于Transformer架构,结合遮蔽词预测和上下句识别的预训练NLP模型.至于效果:在11种不同NLP测试中创出最佳成绩关于介绍BERT的文章我看了一些,个人感觉介绍的最全面的是机器之心再放上谷歌官方源码链接:BERT官方源码在看本博客之前,读者先要了解:1.Transformer架构2.BERT模型的创新之处3.python语言及tensor…
目录前言源码解析模型配置参数BertModelword embeddingembedding_postprocessorTransformerself_attention模型应用前言BERT的模型主要是基于Transformer架构(论文:Attention is all you need).它抛开了RNN等固有模式,直接用注意力机制处理Seq2Seq问题,体现了大道至简的思想.网上对此模型解析的资料有很多,但大都千篇一律.这里推荐知乎的一篇<Attention is all you need>…
目录前言源码解析主函数自定义模型遮蔽词预测下一句预测规范化数据集前言本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BERT针对两个任务同时训练.1.下一句预测.2.遮蔽词识别下面介绍BERT的预训练模型run_pretraining.py是怎么训练的. 源码解析主函数训练过程主要用了estimator调度器.这个调度器支持自定义训练过程,将训练集传入之后自动训练.详情见注释 def main(_): tf.logging.set_v…
Bert预训练源码 主要代码 地址:https://github.com/google-research/bert create_pretraning_data.py:原始文件转换为训练数据格式 tokenization.py:汉字,单词切分,复合词处理,create_pretraning_data中调用 modeling.py: 模型结构 run_pretraing.py: 运行预训练 tokenization.py 作用:句子切分,特殊符号处理. 主要类:BasicTokenizer, Wo…
Mybatis源码解析(二) -- 加载 Configuration    正如上文所看到的 Configuration 对象保存了所有Mybatis的配置信息,也就是说mybatis-config.xml 以及 mapper.xml 中的所有信息 都可以在 Configuration 对象中获取到.所以一般情况下,Configuration 对象只会存在一个.通过上篇文章我们知道了mybatis-config.xml 和 mapper.xml 分别是通过 XMLConfigBuilder 和…
title: RxJava2源码解析(二) categories: 源码解析 tags: 源码解析 rxJava2 前言 本篇主要解析RxJava的线程切换的原理实现 subscribeOn 首先, 我们先看下subscribeOn()方法, 老样子, 先上Demo Observable<Integer> observable = Observable .create(new ObservableOnSubscribe<Integer>() { @Override public v…
写在前面 本文继续来分析Sentinel的源码,上篇文章对Sentinel的调用过程做了深入分析,主要涉及到了两个概念:插槽链和Node节点.那么接下来我们就根据插槽链的调用关系来依次分析每个插槽(slot)的源码. 默认插槽链的调用顺序,以及每种类型Node节点的关系都在上面文章开头分析过 Sentinel源码解析一 NodeSelectorSlot /** * 相同的资源但是Context不同,分别新建 DefaultNode,并以ContextName为key */ private vol…
kubernetes源码解析---- apiserver路由构建解析(1) apiserver作为k8s集群的唯一入口,内部主要实现了两个功能,一个是请求的路由和处理,简单说就是监听一个端口,把接收到的请求正确地转到相应的处理逻辑上,另一个功能就是认证及权限控制.本文主要对apiserver的路由构建过程进行解析. apiserver使用go-restful来构建REST-style Web服务,所以我们先来了解一下这个包的相关内容,以便更好地理解apiserver的源码. (kubernete…
kubernetes源码解析---- apiserver路由构建解析(2) 上文主要对go-restful这个包进行了简单的介绍,下面我们通过阅读代码来理解apiserver路由的详细构建过程. (kubernetes代码版本:1.3.6 Commit id:ed3a29bd6aeb) 从启动位置main函数开始(kubernetes\cmd\kube-apiserver\apiserver.go): func main() { rand.Seed(time.Now().UTC().UnixNa…
原文 前言 本文承接上文:iOS即时通讯之CocoaAsyncSocket源码解析一 上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查:本机地址创建以及socket创建:服务端地址的创建:还有一些本机socket可选项的配置,例如禁止网络出错导致进程关闭的信号等. 上文讲到了本文方法八--创建Socket,其中有这么一行代码: //和connectInterface绑定 if (![self bindSocket:socketFD toI…
终于动笔开始 jQuery 源码解析第二篇,写文章还真是有难度,要把自已懂的表述清楚,要让别人听懂真的不是一见易事. 在 jQuery 源码解析一:jQuery 类库整体架构设计解析 一文,大致描述了 jQuery 源码整体大致架构,主要分为以下几个点:   A 通过自执行函数,在内部将 jQuery (jQuery 为一个函数,同时,在 JS 中,函数也为对象)以 window.jQuery=window.$ 引入,供用户直接便可使用 $.jQuery 调用.       B 以 C#.Jav…
Common.Logging源码解析一分析了LogManager主入口的整个逻辑,其中第二步生成日志实例工厂类接口分析的很模糊,本随笔将会详细讲解整个日志实例工厂类接口的生成过程! (1).关于如何生成日志实例工厂类接口的第一步,通过配置文件配置 配置文件中指定了要生成的是Log4NetLoggerFactory工厂类 通过上面这句代码生成了LogSettings实例 通过上面的代码生成Log4NetLoggerFactory工厂类实例,并将配置参数作为构造函数的参数传递进去,这样就生成了一个L…
上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel模块,因为我们先前主要分析的split_1_*对应的是rmergel,我们先从rmergel查看,如下 ....................................................... split_1(X, Y, [], R, Rs) -> rmergel([[Y, X…
Carousel 走马灯源码解析 1. 基本原理:页面切换 页面切换使用的是 transform 2D 转换和 transition 过渡 可以看出是采用内联样式来实现的 举个栗子 <div :style="'transform: translateX('+ translate +'px);'"> </div> data() { return { translate: 0 }; } 是不是感觉自己已经可以写个轮播图了 骚年莫慌 现在来看源码 main.vue &…
欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html 自己学习ArrayList源码的一些心得记录. 继续上一篇,ArrayList源码解析(一) addll(Collection<? extends E> c) :添加目标集合到原有集合中. //参数需要是Collection的子类 public boolean addAll(Collection<? extends E> c) { //将C集合通过to…
1.什么是Component,PureComponent? 都是class方式定义的基类,两者没有什么大的区别,只是PureComponent内部使用shouldComponentUpdate(nextProps,nextState)方法,通过浅比较(比较一层),来判断是否需要重新render()函数,如果外面传入的props或者是state没有变化,则不会重新渲染,省去虚拟dom的生成和对比过程,从而提高性能. 2.PureComponent应用 一般用于纯函数 3.Component源码分析…
我们在第三十二节,使用谷歌Object Detection API进行目标检测.训练新的模型(使用VOC 2012数据集)那一节我们介绍了如何使用谷歌Object Detection API进行目标检测,以及如何使用谷歌提供的目标检测模型训练自己的数据.在训练自己的数据集时,主要包括以下几步: 制作自己的数据集,注意这里数据集在进行标注时,需要按照一定的格式.然后调object_detection\dataset_tools下对应的脚本生成tfrecord文件.如下图,如果我们想调用create…
IOC容器初始化分为三个步骤,分别是: 1.Resource定位,即BeanDefinition的资源定位. 2.BeanDefinition的载入 3.向IOC容器注册BeanDefinition 下面我们来详细展开这三部分的内容 一.Resource定位 以ApplicationContext的具体实现FileSystemXmlApplicationContext来介绍Resource定位的过程: IOC容器初始化类比为用木桶来装水,Resource的定位过程就是寻找水的过程. 它是由Res…
今天博客我接着上篇博客的内容来,上篇博客我们详细的看了ReactiveSwift中的Observer已经Event的代码实现.接下来我们来看一下ReactiveSwift中的结构体Bag的实现.Bag:袋子,顾明思议,就是用来装东西的,我们暂且将Bag称之为容器.在ReactiveSwift中的Bag主要是用来存储Signal对象的,我们在后期介绍ReactiveSwift源码时会陆陆续续的看到Bag的身影. 因为Bag这个结构体在ReactiveSwift中比较独立,所以我们本篇博客就来聊一下…
今天博客我接着上篇博客的内容来,上篇博客我们详细的看了ReactiveSwift中的Observer已经Event的代码实现.接下来我们来看一下ReactiveSwift中的结构体Bag的实现.Bag:袋子,顾明思议,就是用来装东西的,我们暂且将Bag称之为容器.在ReactiveSwift中的Bag主要是用来存储Signal对象的,我们在后期介绍ReactiveSwift源码时会陆陆续续的看到Bag的身影. 因为Bag这个结构体在ReactiveSwift中比较独立,所以我们本篇博客就来聊一下…
html和text都可以获取和修改DOM节点里的内容,方法如下: html(value)     ;获取匹配元素集合中的一个元素的innerHTML内容,或者设置每个元素的innerHTML内容,                ;value可选,可以是html代码或返回html代码的函数,如果没有参数则获取匹配元素集合中第一个元素的innerHTML内容 text(text)         ;获取匹配元素集合中所有元素合并后的文本内容,或者设置每个元素的文本内容,封装了createTextNo…
样式操作模块可用于管理DOM元素的样式.坐标和尺寸,本节讲解一下坐标这一块. 对于坐标来说,jQuery提供了一个offset方法用于获取第一个匹配元素的坐标或者设置所有匹配元素的坐标,还有offsetParent获取最近的定位祖先元素,position用于获取获取第一个匹配元素相对于最近定位祖先元素的坐标,如下: offset(options)              ;返回匹配元素集合中的一个元素的文档坐标,或者设置每个元素的文档坐标,;不能带单位,默认是px,有两种使用方法: offse…
本篇我们继续来看看AFNetworking的下一个模块 — AFURLRequestSerialization.   AFURLRequestSerialization用于帮助构建NSURLRequest,主要做了两个事情:   1.构建普通请求:格式化请求参数,生成HTTP Header. 2.构建multipart请求.   分别看看它在这两点具体做了什么,怎么做的.   1.构建普通请求   A.格式化请求参数 一般我们请求都会按key=value的方式带上各种参数,GET方法参数直接加在…
一.什么是FactoryBean FactoryBean是由spring提供的用来让用户可以自定bean创建的接口:实现该接口可以让你的bean不用经过spring复杂的bean创建过程,但同时也能做到拿来即用,按需加载:该接口提供的方法如下: /** * 获取FactoryBean管理的对象的实例 一般由spring自动调用 无需手动调用 */ T getObject() throws Exception; /** * 获取FactoryBean管理的对象的类型 */ Class<?> ge…
这篇文章花了点时间,差点成烂到电脑里面,写的过程中有好几次修改,最终的这个版本也不是很满意,东西说的不够细,还需要认真的去看下源码才能有所体会,先这样吧,后面有时间把细节慢慢的再修改.顺便对于开发的学习,个人是觉得源码的阅读是最快的提高方式,当然阅读不是走马观花,应该多次阅读. 上次说到获得HttpApplication对象的创建,创建完成后调用InitInternal方法,这个方法任务比较多,也比较长,这里就不贴全码了,一个一个过程的去说: 初始化HttpModule 对于HttpModule…
scrollLeft和scrollTop用于获取/设置滚动条的,如下: scrollLeft(val) ;读取或设置整个页面的水平滚动条距离 scrollTop(val) ;读取或设置整个页面的垂直滚动条距离 如果没有传入val值则获取滚动条距离,如果有设置val则标识设置滚动条距离,还是举个栗子,以scrollTop为例,如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu…
样式操作模块可用于管理DOM元素的样式.坐标和尺寸,本节讲解一下样式相关,样式操作通过jQuery实例的css方法来实现,该方法有很多的执行方法,如下: css(obj)            ;参数1是一个对象时,表示一次性设置多个css样式 css(name,func)       ;参数2是函数时,设置的是函数返回值 css(name,'')            ;参数2是空字符串时,表示删除该样式(删除style属性上的) css(name)              ;如果忽略第二个…
本节说一下DOM操作模块里的包裹元素子模块,该模块可将当前匹配的元素替换指定的DOM元素,有如下方法: wrap(html)               ;在每个匹配元素的外层添加一层DOM元素                                ;该方法会遍历匹配元素集合,在每个元素上调用.wrapAll()方法        ;不同于wrapAll()的是该方法会在每个匹配元素外面都套一层html元素. wrapAll(html)            ;会将html转化为一个DO…
本节说一下DOM操作模块里的替换元素模块,该模块可将当前匹配的元素替换指定的DOM元素,有两个方法,如下: replaceWith(value)     ;使用提供的新内容来替换匹配元素集合中的每个元素.value是新内容,可以是html字符串.DOM元素.jQuery对象或返回新内容的函数. replaceAll(value)        ;使用匹配元素集合中的元素替换目标元素.内部执行.replaceWith(value)方法,只是语法顺序上不同.类似于append()和appendTo(…
本节说一下DOM操作模块里的复制元素子模块,该模块可以复制一个DOM节点,并且可选择的设置是否复制其数据缓存对象(包含事件信息)和是否深度复制(子孙节点等),API如下: $.clone(elem, dataAndEvents, deepDataAndEvents)    ;jQuery底层方法,返回DOM引用    ;elem是要复制的DOM元素,dataAndEvents和deepDataAndEvents分别表示是否复制克隆元素的数据和事件 和 是否复制深度复制数据和事件 $.fn.clo…