自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 对话生成模型中的条件变分自编码器(CVAE)

废话不多说直接上模型:这是一个非常经典的对话生成模型,叫做HRED(Hierarchical RNN Enconder-Decoder)。思路很简单,就是用一个RNN来建模前j−1j-1j−1句话,再用一个RNN来建模第jjj句话的k−1k-1k−1个词,然后再用一个RNN来解码第jjj句话的第kkk个词。HRED模型的训练:给定一个词的上文,最大化这个词出现的对数似然(极大似然估计)即:argmax(logpθ(wj,k∣w1,w2,...,wj−1,wj,1,wj,2,...,wj,k))arg

2021-02-08 17:35:33 2544 7

原创 Kenlm的使用

安装N-gram语言模型打分,我使用的是kenlm,kenlm是基于cmake编译的C++程序,非root权限下需要指定几个参数,还有一些依赖包需要手动装。1.boost#去boost官网下载最新版的boost:http://www.boost.org./bootstrap.sh --prefix=/home/huanghui./b2 install但是安装的时候报了一个很奇怪的错误:pyconfig.h: 没有那个文件或目录我查了一下,发现需要指定一个系统变量:wh

2020-08-03 16:26:55 2186

原创 机器翻译的数据预处理

主要分为三大块:1.数据筛选:去除那些训练集中不对齐、质量差的句对。相关的技巧有很多:去重:重复的数据会使训练过程有偏。可以简单地去除完全相同的句对,也可以计算每两个句子之间的局部哈希值,把相似度小于某个阈值的句对都去除; 去空行:空行不能提供任何信息,而且可能会引起BUG; 特殊符号处理:这个就需要通过肉眼来观察,然后确定一个特殊符号列表了。常见的,包含控制字符、转义字符、URL符号等的都需要处理,至于处理方式是删除符号、还是删除句对,就得人为确定了; 上面几步不需要tokenize就可以.

2020-07-17 14:31:25 2375 1

原创 huggingface的transformers里面的tokenizer的改写

huggingface里的tokenizer封装的很麻烦,但是也可以理解,毕竟涉及到的预训练模型太多了。随便截个图,在src文件夹里,有一堆tokenization开头的文件:注意所有的tokenization_xx.py都继承了tokenization_utils.py,里面的PreTrainedTokenizer类是所有的tokenizer的基类,有关tokenizer的大部分方法都定义在了PreTrainedTokenizer中,然后再在各个子类中继承和重写。对于新进来的一对句对,是通

2020-06-01 20:57:43 3293

原创 BPE算法之我见

BPE算法本质是基于合并的,而不是基于切分的,理解这一点很重要。在BPE整个迭代的过程中,是基于“词表”的,但是最后要生成的是“子词表”,拿来用的也是“子词表”。拿论文里的例子来说,最开始词表长这样:l o w < 5l o w e r < 2w i d e s t < 6n e w e s t < 3如果你不迭代,直接基于这个词表去生成子词表,那生成的子词表就是二十六个字母:lowestrnid<然后进行五次合并操作.

2020-05-12 17:39:38 803

原创 Ubuntu16.04重装CUDA与显卡驱动

起因是nvcc -V命令不能用,系统提示我可以sudo apt-get install nvidia-cuda-toolkit但是千万不要执行这个命令,因为系统认为你没装CUDA,实际上你是装了的,只不过~/.bashrc里面没有指定CUDA的安装路径,导致CUDA自带的命令用不了。但是我执行了……这条命令会默认下载cuda7.5,然后下载之后,重启机器,虽然nvcc命令可以用了,...

2020-03-17 22:35:34 969

原创 Blas xGEMMBatched launch failed的出现原因

如果你的cudatoolkit是9.x版本的,在执行两个很大的batch做matmal的时候,可能会报一个很奇怪的错误:但是实际上你的显存是够的。为什么会报这样的错误呢?这个问题困扰了我好几天。从网上查阅了很多资料,才发现是cublas的内部的一个保护机制。当你对两个batch做matmul的时候,如果batch的大小大于172800(大概是这么一个数),就会报错。不太确定cudatool...

2019-12-01 14:31:20 6956 7

原创 C++程序在linux下的编译和安装

最近需要在非root权限的情况之下安装一个kytea分词器,搞了好久,所以把遇到的问题都总结一下。首先说C++程序的编译和安装是一个大学问,这里涉及到的是比较传统的./configure,make,make install三部曲。不过似乎用cmake编译的话,步骤也差不多。因为是非root权限,无法访问/usr/local文件夹,所以需要在./configure的时候指定安装目录。这里建议...

2019-11-18 19:10:51 340

原创 pytorch中的模型保存

官方宣称,保存和加载模型参数有两种方式:方式一:torch.save(net.state_dict(),path)功能:保存训练完的网络的各层参数(即weights和bias)其中:net.state_dict()获取各层参数,path是文件存放路径(通常保存文件格式为.pt或.pth)net2.load_state_dict(torch.load(path))功能:加...

2019-11-15 15:01:26 1617 1

原创 tensorflow中Batch Normalization和Layer Normalization的实现

深度学习是一门经验主义的科学,也就是说,人们总是实验效果好了之后才尝试去解释。BN和LN进来得到这么广泛的应用,也不是因为其想法多么巧妙,而是因为其效果确实好。tensorflow1.12版本中这两个函数的实现如下:tf.contrib.layers.batch_norm( inputs, decay=0.999, center=True, scale=F...

2019-11-05 16:08:38 5092 2

原创 学习CRF算法的记录

可以参照下面这两个链接,感觉是讲的最好的。https://www.cnblogs.com/pinard/p/7048333.htmlhttps://www.cnblogs.com/pinard/p/7068574.html个人感觉没必要从吉布斯分布开始,到势函数和最大团,到Hammersley-Clifford定理,再到无向图的概率分解。另外,前向和后向算法在NLP里面感觉用不到。...

2019-10-31 18:36:19 293

原创 深度学习时代的自然语言处理一瞥

以下是作为一个NLP小白根据自己得到的有限的经验的总结,不一定准确。在深度学习时代,自然语言处理最大的一个变化,就是可以绕开基础特征直接进行上层应用了。过去做文本分类或者机器翻译,需要手动设计各种各样的特征,但是换成现在的端到端架构,只需要有输入文本和输出标签,模型自己就可以学习。所以我们对于深度学习时代的自然语言处理进行归纳的时候,没有采用传统的词法、句法、语义的分类方式,而是把NLP归...

2019-10-30 14:03:01 216 3

原创 conlleval.perl的踩坑记录

因为是在conll03上做的NER任务,所以自然使用的是官方的评测脚本,那就是conlleval.perl。但是这个文件是用perl写成的,看起来很吃力,所以我就拿过来直接用,结果踩了不少坑。首先需要配置perl环境,不过用conda或者pip可以直接下。其次conlleval.perl接受的输入是这个样子的:El 0 0consejero 0 ...

2019-10-30 10:51:45 1736 2

原创 小白的深度学习NLP调参经验总结

以下只是我从博客里整理出来的,有很多都没自己试过,也许并不准确。所有网络都涉及到的参数:learning rate: 1e-2到1e-5之间。一般设1e-3就可以。batch size: 16, 32, 64, 128, 256。一般设2^N,具体N取多少可以根据自己的计算资源来决定。optimizer:Adam,SGD,Adadelta。一般用Adam就可以。dropout:...

2019-10-28 16:26:18 1849 1

原创 Linux下通过命令行登录北交校园网

服务器经常不定期断网,但是又没有图形化界面,所以只能通过命令行的形式登录北交校园网。如果用服务器下东西的时候发现东西老是下不下来,或者找不到,就说明可能是服务器断网了。可以ping一下百度来确认一下是不是断网了:ping www.baidu.com如果发出去的包全部都丢失了,那么无疑是断网了。下面这条命令可以通过命令行的形式登录校园网:curl 'http://10.1...

2019-10-26 14:45:18 5108 2

原创 tensorflow中如何计算参数量

所谓的参数量,其实就是可训练的所有张量,每一个张量有多少位数字,然后统计一下数字的个数。比如我们的网络中一共有两个可训练的张量,一个的形状是[5,3,2],另外一个是[5,2],网络的参数量就是:从checkpoint中计算参数量的代码如下:ckpt = tf.train.get_checkpoint_state("./ckpt_path/").model_checkpoint_...

2019-10-22 17:59:26 5669 4

原创 tensorflow中的条件语句和循环语句

tensorflow中,不可以直接拿tensor比较的结果作为 if 语句的条件,因此tensorflow中实现了自己的条件语句:a = tf.get_variable("a",initializer=1)b = tf.get_variable("b",initializer=2)pred = tf.equal(a,b)## 下面这种写法是正确的def fun1(): retu...

2019-10-22 16:16:48 2603

原创 Marian的使用

# 如何训练翻译模型1.使用marian-vocab在build/data目录下生成词表,注意先生成第一次,然后再缩小阈值生成第二次。如果两个语种的词表大小相差较大,则合并后再生成一次,然后再缩小阈值生成第二次;2.修改run_train.sh,然后nohup运行;3.当marian自带的三个指标都开始stall时,则可以停止了;#如何部署翻译模型1.根据valid.log挑选...

2019-10-21 16:12:47 941

原创 Python3实例化方法和类方法

class A(object): # 属性默认为类属性(可以给直接被类本身调用) num = "类属性" # 实例化方法(必须实例化类之后才能被调用) def func1(self): # self : 表示实例化类后的地址id print("func1") print(self) # 类方法(不需要实例化类就可以被类...

2019-10-21 16:12:11 1956 1

原创 tf.matmul()和tf.multiply()的区别

1.tf.multiply() 两个矩阵中对应元素各自相乘注意:(1)multiply这个函数实现的是元素级别的相乘,也就是两个相乘的数元素各自相乘,而不是矩阵乘法,注意和tf.matmul区别。(2)两个相乘的数必须有相同的数据类型,不然就会报错。2.tf.matmul() 将矩阵a乘以矩阵b,生成a * b注意:(1)输入必须是矩阵(或者是张量秩 >2的张量,表示...

2019-10-21 16:11:11 314

原创 Python3绝对和相对导入

如果我们的目录是如下分布的:——package1—moduleX.py—moduleY.py——package2—moduleZ.py如果在moduleX.py中想要导入moduleY.py,有如下三种方式:import moduleY #隐式相对导入,在python3中实际上已经被禁用from . import moduleY #显式相对导入from packa...

2019-10-21 16:10:41 1202

原创 tensorflow中如何average checkpoint

首先获取checkpoint的状态以及每个参数的值:ckpt_state = tf.train.get_checkpoint_state(model_dir)ckpts = (ckpt_state.all_model_checkpoint_paths)avg_model_dir = os.path.join(model_dir, "avg_ckpts")tf.gfile.MakeDi...

2019-10-21 13:37:51 974 1

原创 tensorflow如何对不等长输出按照每句话长度进行mask

如题,比如NER的输出,每一句话的长度都是不一样的,所以超出实际句长的部分需要mask掉。但是tensorflow中对于张量很不好操作,也不方便写循环,所以我们使用了以下几个函数实现不等长的mask操作。sequence_mask = tf.sequence_mask(batched_len, maxlen=FLAGS.max_len)final_outputs = tf.laye...

2019-10-14 16:19:39 808

原创 tensorflow如何实现梯度截断

optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate)grads_and_vars = optimizer.compute_gradients(self.loss)for i, (g, v) in enumerate(grads_and_vars): if g is not None: grads_an...

2019-10-14 16:10:53 1789

原创 利用tf.gather_nd等一系列tf函数取出qebrain中的mis_matching feature

shift_proj_inputs = self.emb_proj_layer(shift_inputs) _pre_qefv = tf.concat([shift_outputs, shift_proj_inputs], axis=-1) # _pre_qefv = shift_outputs + shift_proj_i...

2019-08-20 15:23:16 336

原创 GIZA++的使用

安装很简单,直接在根目录make就可以。建一个tool目录,将GIZA++-v2内的plain2snt.out,snt2cooc.out,GIZA++复制到tool中,再将mkcls-v2下的mkcls也复制进去,同时把chinese_segment.txt和english_segment.txt也放进去。接下来,执行下面的指令来完成将普通文本转化为 GIZA++ 格式./plain2s...

2019-07-25 09:58:05 2093 1

空空如也

空空如也

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

TA关注的人

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