自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NER(命名体识别)之 FLAT模型

Lattice-LSTM是中文NER引入外部知识的开篇之作,具体的操作如下首先是通过词典进行匹配,找出query中的词汇,“重庆人和药店”,匹配的词汇,重庆、药店、人和药店Lattice是一个有向无环图(DAG),LatticeLSTM则将序列中的词汇信息(word-level)即词语的信息会融入到该词语对应的最后一个字的序列信息中。LatticeLSTM引入了一个wordcell结构,对于当前字符,融合以该字符结束的所有word信息若当前字符没有词汇引入时,则采取原生的LSTM进行计算。...

2022-07-31 17:02:56 1667

原创 文本匹配任务

一、任务概述二、常用方案三、sota 论文1.各向异性embedding 2.各向同性embedding四、 QA问题

2022-04-10 14:41:18 2029

原创 深度学习之文本分类总结

一、文本分类概况二、文本分类的发展三、文本分类常用的模型结构四、文本分类模型实际中遇到的问题(Q&A)

2022-03-25 15:50:52 17536

原创 [论文阅读] ACT: An Attentive Convolutional Transformer for Efficient Text Classification

一、前言追一科技AAAI2021上的论文,主要是关于文本分类任务,论文地址:https://www.aaai.org/AAAI21Papers/AAAI-1396.LiP.pdf二、主要思想三、论文试验结果四、主要讲解

2022-02-20 11:32:44 1236 1

原创 Seq2Seq模型PyTorch版本

Seq2Seq模型一、Seq2Seq模型的概述二、Seq2Seq模型的结构三、Seq2Seq模型的代码讲解

2021-10-07 09:45:39 1680 1

原创 Word2vec词向量

前文也零散的写了些 关于神经网络模型的篇幅,如NNLM,本文着重讲解有关词向量的内容,从静态词向量到动态词向量等,其实相关的内容,网上也有很多,本人主要是为了做些记录和巩固下基础的知识点...

2021-10-03 16:25:25 1771

原创 Bert系列之 Transformer详解

Bert整体的模型结构使用的是Transformer的Encode模块 进行层次叠加,唯一的不同点是位置编码position embedding 使用的是随机初始化矩阵,没有使用的是三角函数,transformer中的位置编码使用的是 三角函数一.Transformer模型结构二....

2021-09-22 09:29:10 3954

原创 预训练模型 Bert

本篇开启bert源码讲解系列,从bert模型的基础开始讲起,结合HuggingFace出品的 pytorch源码逐步分析,有些图片来自于网络,有冒犯的,麻烦告知下~

2021-09-19 23:25:25 767

原创 循环神经网络RNN 之 LSTM

本篇文章主要是记录RNN 到LSTM的发展历程,以及文末给出一个能跑的demo示例一. RNN 循环神经网络1.1初识单层神经网络1.2RNN的结构1.3RNN的弊端二. LSTM网络三.双向LSTM网络四.代码例子

2021-09-04 18:51:24 1517

原创 语言模型(NNLM)

本文主要是记录神经网络语言模型

2021-08-29 00:11:32 4446 1

原创 深度学习之 卷积网络(textCNN)

近期利用零散的时间,系统的学习下 nlp经典的模型,主要是看了韩国一个小哥哥的github开源代码,写的很好,大家有时间 可以去看看,美中不足的是没有注释和说明,这里我主要是参考他的代码,自己学习学习,并顺便把nlp的零散的基础知识补充一下基础知识回顾:一. CNN网络二. textCNN网络三.代码展示:import torchimport torch.nn as nnimport torch.optim as optimimport pdbimport torch.nn.f

2021-08-24 23:24:42 1190

原创 最小树高度

题目:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。example:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5解答:/** * Definition for a binary tree node. *...

2020-08-03 07:24:01 200

原创 内存申请(malloc)和释放(free)之下篇

上篇介绍了内存malloc的sbrk和brk系统调用,以及mmap函数。本篇开始学习下内存的具体的malloc分配逻辑和free逻辑。(本篇幅的学习借助,华庭大神(阿里 庄明强) 总结的ptmalloc源码资料)1.简介linux系统glibc库是linux系统中最底层的c语言运行库,glibc库中分配内存和释放内存使用的函数是ptmalloc函数和free函数,分配器处在用户程序和内核之间,响应用户的内存分配请求。为了高效分配,分配器一般会预先分配一块大于用户请求的内存,并通过某些算法来管理.

2020-08-02 16:13:10 978

原创 tensorflow实战之手写体识别

本人由于一直从事语义理解引擎开发工作,更多的是接触人机交互系统的优化,模型的落地上线,业务的效果优化等工作,deepLearning接触的不是很多,本篇开始,从零开始学习深度学习知识,深入理解交互系统的整体,从模型到架构。这里主要是用于记录 自己从网上开源的或者其他大神的blog学习。一.简介MNIST是开源的一个手写体识别的数据集,该数据集中包含了大量的手写图片,我们这里需要通过对模型的训练,对给出一张图片进行分类,主要包括三个部分:(1).训练数据集,55000个样本,mnist.train

2020-07-26 17:03:44 2766

原创 内存申请(malloc)和释放(free)之上篇

上一篇简单的介绍了进程内存寻址空间和内存分配,本篇主要详细介绍下内存的申请和释放1.brk和sbrkint brk(void * addr)void * sbrk(intptr_t increment)(1).brk()和sbrk()改变程序间断点的位置,程序间断点就是程序数据段的结尾(2).增加程序间断点,申请有效内存,传参为addr,数据段结尾设置为addr(3).sbrk()将程序数据空间增加increment字节(4).内存的申请和释放均可以使用brk或者sbrk来操作

2020-07-25 23:53:15 587

原创 Linux内存管理(一)

最近引擎版本上线,测试人员发现一个"奇怪问题",引擎实例不停的创建和销毁过程中,内存增长过快,看起来很像是内存泄漏,但是工具valgrind跑出来,也没发现代码的泄漏点,跑了很多次循环后,内存增加到一定后,就表现平稳,所以近期抽点时间,系统的学习下linux系统内存管理方式本次从以下四个问题出发:1.Linux虚拟地址如何分布? 我们常常说的 32位和64为有啥不同? 虚拟地址和物理地址区别?2. 如何分配内存,malloc ?3.malloc 是在虚拟地址 ? 物理地址分配内存,程序需要.

2020-07-18 23:39:15 227

原创 设计模式 之 工厂模式

前面介绍了简单工厂模式的例子,这里主要是说下工厂模式与简单工厂模式的区别。简单工厂:没有抽象类,只有一个具体的工厂类Factory,根据输入类型来返回创建的对象实例。以下面的手机制造来举例子。国内的手机厂商有华为、vivo、魅族等。手机代工厂需要制造这些不同品种的手机。此时Factory类就需要客户端传入制造手机的品种才能创造。很明显缺点是此时如果需要制造小米手机,那就需要修改Factory类...

2019-05-12 10:50:41 319

原创 设计模式 之 简单工厂模式

简单工厂模式简单工厂模式是属于设计模式中的创建性模式,一般是使用静态方法,通过接收不同的参数,返回不同类型的对象实例,下面以大话设计模式中的计算器来举例。计算器一般常见的是四种运算法则,加减乘除。客户端传入需要运算的符号时,会返回该运算的对象实例,进行相应的计算。扩展性较差,添加一个新的运算法则需要修改工厂类Factory,下面是计算器的类图。下面来看看具体的代码:/***计算器...

2019-05-11 21:50:28 360

原创 设计模式 之 单例篇

单例模式是最常用的一种设计模式,大家也是最熟悉不过了,网络上资料也很多。这里只是自己对自己学习的知识做下笔记,这样也有助于自己加强理解和记忆。文章篇幅中有误的地方,麻烦大家指点。单例模式简析:一个类只有一个实例,并且对整个系统来说只有一个全局的访问点。该类的唯一对象必须是自行创建,调用者不必创建,必须自行向整个系统提供该实例。一个类必须能返回对象的一个引用(永远是同一个),且该实例是st...

2019-05-11 11:03:48 124

原创 boost库智能指针

程序的内存资源管理一直是个比较麻烦的问题,c++程序在引入智能指针之前,new出来的内存,需要自己手动的销毁,自己去管理申请堆内存的生命周期。有的时候难免会遗漏对资源的释放销毁。智能指针则能很好的解决内存管理的问题,不但能很好的管理裸指针,还能管理内存资源(RAII)机制。前借助Boost库开发指南,这里做个简单的讲解。有不足地方请广大读者提出,感激不尽。c++ 智能指针有比较多的版本,其中比较...

2019-04-27 15:03:33 203

原创 c++ 多态的哪些事

c++ 是一种面相对象的语言,其核心主要是表现在c++语言的多态上,简单的概括为“一个接口,多种形态”。多态的特性是通过虚函数来实现的。虚函数允许子类重写父类的函数,只有重写了虚函数才能体现c++ 的多态特性。一般的子类可以重载父类的成员函数,这些重载的函数 允许多个同名函数,函数的参数列表不同,参数的个数不同,参数类型不同。编译器会根据这些函数的参数列表,参数类型,参数个数,等生成一些不同名字的...

2018-09-10 00:40:10 130

原创 c++ 内存对齐那些事

一.内存对齐介绍目前的计算机系统中 cpu都是按照字节进行读取存储的内存数据,访问某一个变量的时候 需要在特定的地址空间中访问,此时就需要各种不同类型的变量在内存空间中按照一定的规则进行排放,而不是一个接一个的进行有序排放。所以现代编译器中都会对内存进行自动的对齐。struct struct1{    char a;    int b ;    short c;};上面的st...

2018-09-09 18:11:16 1391 1

原创 c++ 程序性能优化(一)

最近在看《c++ 性能优化指南》书籍,从书中学习到了不少c++ 程序优化的点,平时代码中一定要注意这些坑,在此记录下来。本篇幅主要是讲下字符串处理性能的优化。一.下面来看一个简单的例子,我们平时 写代码 不注意的时候,最有可能写出的是如下所示的第一种 remove_ctrl() 形式的代码。 #include <stdlib.h> #include <stdio...

2018-08-19 23:37:07 7056

原创 linux环境下的c++ 动态库的调用

主要是为了平时的学习记录,不妥的地方,烦请指点。一.下面主要是dlopen打开动态库.so相关的API接口函数。1. void* dlopen(const char* filename,int flag);filename 是动态库的path路径,flag是动态库加载的几种方法。RTLD_LAZY:dlopen返回前,对动态库中存在的未定义的变量不进行解析,只对函数符号有效,变量符号会被立即加载。...

2018-07-15 11:52:10 6252 2

原创 多模式匹配算法---AC自动机

主要是为了记录平时的学习,网上类似的例子也很多。有错误的地方,烦请大家指出,多谢。一.简单介绍1.KMP算法和AC自动机都是用于字符串的匹配,KMP算法主要是用于单一模式串的匹配,对于多模式串的匹配目前实际应用中较多的是AC自动机算法,多模式的匹配类似于,求解多个模式串,p1,p2,p3……在一个连续的文本中T1,T2,T3……Tm中的出现的次数和出现的位置。2.一般的求解步骤是分为以下几步:(1...

2018-07-08 14:46:47 268

原创 动态规划求解最大公共子串和最大子序列问题

一.简单的介绍动态规划一般用于求最优子结构问题,求全局的解,可以通过求局部的最优解,渐进的达到全局的最优解。最大公共子串 表示的是字符串str1 和字符串str2 之间存在重复的部分,但是重复的字符串一定要是连续的,不能间断。最大公共子序列表示的是字符串str1 和字符串str2 之间的是存在的字符相等,但是可以不要求是连续的。例如 str1 = "ABCAB"str2 = "BCBD"。str1...

2018-06-24 22:47:55 923

原创 boost 编程bind和function

用于记录学习boost::bind() 和boost::function()的知识点。一.bind和函数的绑定主要是以下几种:首先定义函数:void func1(){ std::cout << " hello bind " << std::endl;}void func2(int a,int b,string c){ std::cout << " f...

2018-06-18 00:41:18 311

原创 boost多线程编程(三)

这次主要是对多线程编程中的条件变量篇章做一个简单的总结。用于记录自己阅读boost库编程指南,不免有些理解不透的地方,望大家见谅并且指出。一.条件变量的简单介绍1.条件变量是利用线程间共享的全局变量来进行同步的一种机制,它的实现主要有两个动作:     (1).一个线程等待条件变量的成立,而被挂起。     (2).另一个线程操作条件变量,使得条件变量的成立,并且给出条件成立的信号,唤醒该睡眠线程...

2018-06-17 11:07:02 585

原创 boost 多线程编程(二)

一.互斥量的介绍1. 互斥量主要是用于线程间的同步,在多线程中主要是防止多个线程同时操作共享资源。2.互斥的基本原则是,一旦某一个线程拥有互斥变量的所有权,操作共享的资源时,那么其他的线程就处于等待中,等待这个互斥量的所有权,一旦拥有所有权的线程释放互斥变量时,其他的线程才能取得互斥变量的所有权。3.互斥量分为两种:独占式和共享式,互斥变量mutex的对象类大致如下:    (1).mutex,独...

2018-06-12 20:41:43 1012

原创 boost多线程编程(一)

一.thread线程的创建1.线程就是在进程空间中运行的一个函数2.线程创建时需要传递给thread对象一个函数对象或函数3.传递的函数有参数时,可以直接传递给thread对象,并在调用时候发生拷贝。4.参数较大时,可以传递给线程一个引用值,需要使用ref库进行封装。引用的对象在线程执行时一直存在二.下面我们来看个简单的例子 #include <boost/bind.hpp> ...

2018-06-10 16:45:05 1134 1

空空如也

空空如也

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

TA关注的人

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