- 博客(68)
- 收藏
- 关注
原创 windows下安装javatools
直接通过pip安装的话,M2crypto库会出问题。目前已知的解决办法:使用python3.8下载M2Crypto-0.35.2.win-amd64-py3.8.zip,使用pip安装whl文件pip安装javatools
2020-08-02 11:58:53 272
原创 Pycharm远程调试服务器
最近每天调transformer,自己的显卡承受不了,需要链接远程服务器,但是写好再传到服务器比较麻烦,也没办法装图形化IDE。幸亏Pycharm提供了非常优秀的远程调试方法,和在本机操作没有任何区别。设置远程python解释器我们以新建项目为例,当它需求一个python解释器时,选择existing interpreter,点击旁边的…选择ssh interpreter,填写你的hos...
2020-04-21 15:59:42 597 1
原创 GPT/BERT训练:Creating MTGP constants failed
这个bug有两种原因。一是在pytorch早期版本中,使用了超过512的序列长度,见:训练bert中的一些坑。二是config文件和model不相符,有可能是你添加了special token,但是没有添加到model的embedding_size里。在huggingface系预训练model中,使用这一的句子添加special token是安全的。def add_special_toke...
2020-04-01 19:39:21 841
原创 Linux:深入理解文件系统及其实现
文章目录Linux:Proc文件系统和实现Abstractfile_operationsproc_create[^5]seq_fileLinux 链表seq_filesingleConclusionLinux:Proc文件系统和实现Abstract“一切都是文件”是unix/linux中广为人知的哲学,更详细的解释是:一切设备,套接字,管道,进程,都以文件的形式描述,支持open,close...
2020-03-18 12:12:53 357
原创 windows pycharm代码迁移到Linux服务器
前言最近实验吃紧,在用自己电脑训练的同时,也需要用机房电脑训练baseline,所以需要将运行在Windows下pycharm的代码迁移到Linux,主要需要做这两步:构建层次关系将\\改成/构建层次关系pycharm会自动修改python路径,建立层次关系/ex /data data.py /train main.py在pycharm中,可以在项目的任何地方(例如...
2020-03-17 23:37:03 1603
原创 Linux:模块加载与参数传递
Linux:模块加载与参数传递AbstractLinux内核是模块化的,由一个尽可能小的基本内核,和一堆实现进阶功能的内核模块组成。支持模块的好处有三个,一是让基本内核非常精简,二是允许在运行时添加功能,三是支持设备的热插拔,因为设备驱动也是以内核模块的形式实现的。大多数情况下,可以认为模块的功能就是注册和删除设备驱动。模块和应用程序的功能是不同的,它并不负责完成工作,而是将完成工作所需要...
2020-03-08 20:46:41 750
原创 优雅地使用批处理技巧大幅提升数据处理速度
假设,你遇到一份包含26万句子的数据集需要处理而处理速度仅仅为1it/s如果顺序执行,需要三四天的时间。一个解决办法就是,分而治之,分成n份并行执行,处理完之后再合并。具体流程如下:生成一个包含n个命令的批处理文件,例如可以发现,我们生成了一个批处理文件(windows:.bat,linux:.sh)...
2020-03-05 12:22:47 878
原创 Windows下安装使用Spacy英文库en_core_web_md,解决Warning: no model found for 'en_core_web_md'
spacy是一个强大的NLP数据处理工具,它使用二步的安装步骤:先安装spacy,再安装对应的语言包,但是第二步默认下载速度慢,手动安装常出问题。在Windows下安装,可以先使用conda安装spacy,注意不要像一些教程那样加上conda-forge的参数,这样会将你的下载源改成coda-forge,从而覆盖掉清华源。conda install spacy接下来是安装英文包,我是在这个...
2020-03-04 18:33:22 4199 5
原创 理解VHDL基本概念
An Introduction To VHDLAbstractFPGA(现场可编程逻辑阵列),是一种领先的硬件设计方式,简单地说,用户可以根据需要为开发板设计功能,并且可以随着需求的改变随时改变功能,而对开发板功能的编程,就是由VHDL(高速集成电路硬件描述语言)完成。由于方便易用的特性,FPGA和VHDL语言在现代嵌入式系统中占据着统治地位,并且在机器学习设计中扮演着越来越重要的作用,FP...
2020-03-02 17:11:06 2093
原创 深度理解tf.gather和tf.gather_nd的用法
tf.gather和tf.gather_nd都是从tensor中取出index标注的部分,不同之处在于,gather一般只使用一个index来标注,而gather_nd可以使用多个index。例如:如何直观理解gather_nd的indices呢?在上例中,直观的理解就是,取出params中位于[0,0]和[1,1]处的tensor,放入index中对应的位置。换句话说,除去tenso...
2020-02-28 17:15:55 12967 1
原创 Tensorflow调试指南:tf.Print
TL;DRtf.Print(input,data)a=tf.Print(a,["value",a,"shape",tf.shape(a)])tensor a可以定义在代码的任意一个位置,只要在session.run时节点a有数据流过(否则你也不会想要debug它),data就会被打印到终端。Codeimport tensorflow as tfdef _test_(): w...
2020-02-28 11:39:39 950
原创 GPT-2代码解读[3]:Block
GPT-2代码解读[3]:BlockOverview模型由12个基本块构成,每一块由三部分构成,我们已经考虑过和Embedding与Attention相关的部分,现在考虑最后一部分:Add&MLP。记Attention层的输出为a,块输入为x。Add&MLP层的信息流动如下:x=x+ax=x+ax=x+am=mlp(x)m=mlp(x)m=mlp(x)x=x+mx=...
2020-02-21 17:22:38 1163
原创 GPT-2代码解读[1]:Overview和Embedding
GPT-2代码解读[1]:Overview和EmbeddingAbstract随着Transformer结构给NLU和NLG任务带来的巨大进步,GPT-2也成为当前(2020)年顶尖生成模型的泛型,研究其代码对于理解Transformer大有裨益。可惜的是,OpenAI原始Code基于tensorflow1.x,不熟悉tf的同学可能无从下手,这主要是由于陌生环境1导致的。本文的意愿是帮助那些...
2020-02-21 17:21:54 3703 1
原创 GPT-2代码解读[2]:Attention
GPT-2代码解读[2]:AttentionOverviewAttention模块的结构如上图所示,只有Linear部分是可训练的,第一次Linear将嵌入向量转换为Q,K,V1,第二次Linear将Attention的结果重新转换为嵌入向量,作为下一层的输入。从信息的角度来说,嵌入向量首先被转换2为三种信息,即Query,Key和Value。信息的本性由用法(去向)决定,而非由来源决定...
2020-02-21 17:19:44 1499 1
原创 Python List,Numpy和Tensorflow的加法运算符
a + b 对于Python List, Numpy 和Tensorflow的表现不同,这有时会导致一些困惑。List:拼接Numpy:element-wise plus要求a与b的size相同或者相容。Tensorflow:element-wiseList并不一定盛放数字,所以将+定义为element-wise plus是没意义的。...
2020-02-19 09:20:45 418
原创 [AllenNLP框架下工程化的AI实验01]以语言模型为例
摘要搭建语言模型,说明AllenNLP的疑点和潜规则。核心概念DataReaderVocabulary &NamespaceDataIteratorModelTrainerPredictor
2020-01-16 13:06:26 482 1
原创 最好的AI实验方式?AllenNLP介绍与评价
介绍AllenNLP是由AllenAI研究所提出的NLP框架,与ELMO师出同门。据项目领导人Matt Gardner所说,该框架是在问题“NLP实验的最优实践方式”下提出的。在EMNLP2018上,AllenAI对该框架做了介绍:演讲ppt。ppt讲述该框架的指导原则,也是NLP实验的指导原则,受益匪浅。我将这个ppt上传到百度网盘(提取码:ywm2),方便github速度慢的同学下载。...
2020-01-14 15:49:27 927
原创 解决一部分python FileNotFound问题:Python项目中的两个根目录
项目根目录显然是kglm-model-master,因此在allennlp的json配置文件里,应该这样填写在引入自己的package时同理但是如果在包内单个文件做单元测试,根目录是该文件所在目录。要访问到data文件夹则需要回退...
2020-01-13 15:41:13 406
原创 从零开始搭建NLP Linux开发环境:Ubuntu18.04双系统,中文输入法,pycharm,anaconda,nvida驱动,cuda,cudnn,pytorch,allennlp
写在前面2020年配置深度学习开发环境,除了有几个坑之外,安装过程是简单的,网上繁琐的方法,反而有可能是过时甚至危险的。这篇博客的目的是结合几个精华博客,说明原理与坑点,帮助对操作系统不太熟悉的小伙伴们顺利安装。安装Win10+Ubuntu双系统电脑是华硕飞行堡垒,1060,1T机械硬盘。根据https://blog.csdn.net/github_37603222/article/de...
2020-01-12 20:18:06 853
原创 [Pytorch官方NLP实验解惑04]基于seq2seq和Attention机制的法英翻译器
这篇博客是对https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html#sphx-glr-intermediate-seq2seq-translation-tutorial-py中一些问题的解惑,可以配合使用,有其他不理解的也欢迎讨论。原实验运行在老版本的python和torch上,在当前版本已经做不到...
2020-01-05 14:42:56 470
原创 [Pytorch官方NLP实验解惑03]基于lstm的seq2seq单词标注器
序列到序列(seq2seq)是nlp任务中重要的一类,它和其他任务的根本区别在于它以序列作为处理对象,而序列由彼此独立又相互联系的单词组成,为了处理这种关系,需要在层与层之间记忆和传递状态,以表达单词之间的联系,深度学习使用rnn及rnn的变种(lstm,gru)解决这一问题。本实验实现一个单词标注器,即单词序列->词性序列。 ("The dog ate the apple".split...
2019-12-30 22:15:11 548
原创 [Pytorch官方NLP实验解惑02]NGram语言模型
该实验不仅介绍了语言模型,还引出了word embedding,前者在nlp中称为下游任务,后者称为预处理,预处理+下游任务的二阶段模型是现在nlp实验的常用框架。语言模型语言模型在nlp中一般指一个句子在自然语言中出现的概率,本实验的目的是训练一个根据上文预测单词的语言模型,即求P(Wi∣Wi−N...Wi−1)P(Wi|W_{i-N}...W{i-1})P(Wi∣Wi−N...Wi−1)...
2019-12-29 17:13:30 470
原创 [Pytorch官方NLP实验解惑01]词袋分类器
Pytorch官方实验的食用方法pytorch官网上关于NLP的实验有两类,https://pytorch.org/tutorials/index.html#text和https://pytorch.org/tutorials/beginner/deep_learning_nlp_tutorial.html,两份教程的风格比较类似,倾向于快速原型,不需要下载,预处理数据集,而是通过几个简单的样例...
2019-12-29 16:28:30 463
原创 [Pytorch02]自动求导机制
动态计算图不同于静态计算图中网络结构一开始就被预设好,动态计算图中一个节点只有被执行到且requires_gard=True时,才被加入计算图。深入浅出动态计算图loss.Backward作用: 从loss向前对叶节点链式求导,计算得到的参数保存在每个叶节点的grad中。什么是叶节点?不需要更新梯度的tensor。如果一个节点根本就不需要更新梯度,也就意味着梯度流会停在这里,他肯定...
2019-07-20 13:14:04 240
原创 [Pytorch01]Tensor的创建与复制:tensor(a),detach(a),clone(a),=a
Tensor的创建tensor()t=torch.tensor(a)a可以是列表,ndarray,tensor对于ndarray和tensor来说,t是一个copy,对t的任何操作都不会影响原有数据。随机和numpy中随机语法类似rand:在(0,1)的均匀分布中samplerandn: 在N(0,1)的正态分布中sampleTensor的复制t=tensor(a)...
2019-07-20 12:14:47 10469
原创 [GAN03]详解WGAN-GP的pytorch实现中的一些难点
G的网络搭建DIM=64class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() preprocess = nn.Sequential( nn.Linear(128, 4*4*4*DIM), nn.R...
2019-07-20 09:23:02 6768 3
原创 [GAN02]WGAN,WGAN-GP,WGAN的Keras实现与WGAN-GP的Pytorch实现
Idea of WGAN在GAN01:GAN的原理与DCGAN的Keras实现中,我们了解到,GAN的目的是使用生成器分布PG拟合数据的真实分布Pdata,在GAN的初始paper以及DCGAN的实现中,实际上计算这两者之间分布差的那个度量标准是JS-Divergence,而利用Sample的方法计算Divergence,就是上文中我们使用的Binary Crossentropy Loss。由...
2019-07-20 01:26:17 3297 1
原创 [GAN01]GAN原理介绍并使用Keras实现DCGAN基于Mnist数据集的图像生成
前言打算开坑实现一系列GAN,并基于这些模型对GAN的原理进行深入理解与挖掘。第一篇是DCGAN。理论部分GAN的原理从图中可以看到,GAN分为两部分,生成器和鉴别器。生成器生成器的目的是利用噪音生成以假乱真的图片,因此,其输入是无意义的噪音,输出是利用该噪音生成的图片。生成器是如何利用噪音生成图片的?我们希望生成的图片可以看作在空间中按照一定概率密度分布的高维张量。注意这个概...
2019-07-16 19:06:25 1708 1
原创 Atcoder Grand Contest 026B
题意给n层的一个塔涂色,有三种颜色可选,涂R得分为A,涂G得分为A+B,涂B得分为B,不涂得分为0,请问要正好得分k有多少种方式。n的范围是10^5。思路首先明确,可供我们做出的选择是什么?对于塔的每一层,我们需要从以下四种可能性里选择一种。由于G的得分恰到好处的等于A+B,这说明它可以用R和B来表示,这一点需要引起我们的注意。我们将每一层看作涂两种颜色R和B,第一位为1表示涂B...
2019-04-09 23:28:31 156
原创 类型声明的理解方法
声明类型符+表达式char **p 对p取两次引用得到charchar *f() 因为()的结合性更高,先对f取()再引用得到char
2019-04-08 11:59:05 368
原创 Pyqt5主窗口调用子窗口,自定义信号与槽函数
主窗口调用子窗口目前有一个主窗口Mainclass Main(): def openfile(self): filenames=QFileDialog.getOpenFileNames(self,'选择文件','./') if filenames[0]: #如果成功读取到了文件,则弹出子窗口比较原始的想法是,能不能直接把子窗口...
2019-04-05 19:08:35 6862
原创 补码的加减法
补码的表示教科书上一般是通过原码引出补码的,这样会导致对最高位的意义理解不够透彻,这里介绍一种csapp上给出补码的方式。X=Σpi*wi这里的wi是第i位所代表的权值,pi是第i位的取值,为0或者1n=8的补码表示如图所示从图中很容易看出,补码中只有一个0,即00000000补码的加减法[x]表示x的补。补码的加法[x+y]=[x]+[y]。分几种情况考虑x与y都是正数...
2019-04-02 17:23:26 5364 8
原创 HDU1133题解(递推做法)
HDU1133题解题意m和n个人去买票,m个人有50元,n个人有100元,问有多少种买票的方式。笺释这道题做之前完全不知道卡特兰数是什么东西,自己写了个大数dp过了,先说下那个思路。void solve(){ dp[1][0][0]='1';dp[0][0][0]='0'; for(int i=2;i<=200;i++) {
2018-05-01 00:47:45 836
原创 Atcoder Grand Contest 023 C 题解
Atcoder Grand Contest 023 C 题解题意有N个格子,第1到第N-1个格子上有Painting Machines,每一个位于i处的Painting Machine可以将i和i+1位置的格子涂上颜色,将全部格子涂上颜色的时候使用的Painting Machines数目是本次得分,问所有可能性的得分之和。笺释从得分的角度考虑,最低得分是[N/2],最高得分是N-1。 那么对于一个
2018-05-01 00:47:18 342
原创 Atcoder Grand Contest 023 A题解
Atcoder Grand Contest 023 A题解题意给定一个数字序列,想知道有多少种选择子序列的方式使得子序列和为0.笺释 子序列A如果一定是从序列的头部开始向后的,这时候我们只需要选择尾部使得A的和为0,这时候我们知道当离散的sum曲线在某一点i处取得值为0时,这是一个尾部的选择方式。 以此类推,子序列A如果不一定是从序列头部开始的,而是以任意起点s为头部,那么只需要寻找终点e使得s
2018-04-30 19:01:11 175
原创 洛谷P1077题解
洛谷P1077题解题意中文题惯例了。 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。笺释想通过这道题好好梳理一下dp方案数的本质。 在用dp求方
2018-04-30 18:51:33 504
原创 hdu2546题解
hdu2546题解题意中文题惯例不翻译 uestc本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。笺释这算是排序dp问题
2018-04-30 18:51:06 260
原创 HDU1421题解
HDU1421题解题意中文题惯例不翻译,直接贴。 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲
2018-04-30 18:50:47 165
原创 AtCoder Petrozavodsk Contest 001 B题解
AtCoder Petrozavodsk Contest 001 B题解题意两个数组a和b,可以做这样的操作 选择一个数i和j 向ai加2,向bj加1。 问有限次操作后能否使a与b完全相等。笺释显然如果一开始a的和就比b大,那么一定不能达到。 如果一开始a小于等于b,考虑这这样一种手段: 对于每一个i,我们知道最终一定要让ai==bi,那么我们在拿到i的时候就进行操作让ai等于bi。如果a
2018-04-30 18:50:30 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人