自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(417)
  • 资源 (1)
  • 收藏
  • 关注

原创 transformer_lstm_example

【代码】transformer_lstm_example。

2024-04-16 14:19:53 71

原创 nn.TransformerEncoderLayer中的src_mask,src_key_padding_mask解析

注意,不同版本的pytorch,对nn.TransformerEncdoerLayer部分代码差别很大,比如1.8.0版本中没有batch_first参数,而1.10.1版本中就增加了这个参数,笔者这里使用pytorch1.10.1版本实验。

2023-03-14 13:06:20 6784 2

原创 实体抽取-将bio标签转为json文件的代码

【代码】实体抽取-将bio标签转为json文件的代码。

2023-02-12 19:14:47 1986

原创 pytorch 实现Transformer encoder

【代码】pytorch 实现Transformer encoder。

2023-02-01 17:19:47 2027

原创 在m1芯片的mac os上安装huggingface tokenizers报错

完成安装之后,可以使用。

2022-12-15 23:34:24 935

原创 tmux 更优雅的后台训练模型

更优雅的后台训练模型的方法说起后台训练模型,首先想到的必然是nohup &的方式,nohup &后台运行程序。但我有时候会遇到bug。这里介绍一种更优雅的方式tmux详细内容见Tmux命令使用教程!SSH远程训练模型必备安装# Ubuntu 或 Debian$ sudo apt-get install tmux# CentOS 或 Fedora$ sudo yum install tmux# Mac$ brew install tmux新建会话# 默认新建一

2022-05-18 22:56:10 1703

原创 beam_search

import torchimport torch.nn.functional as Ffrom src.utils import generate_square_subsequent_maskimport mathclass Translator(): def __init__(self, bos_idx, eos_idx, device, max_steps=64, beam_size=3, length_norm_coefficient=0.6): '''

2022-03-31 14:27:10 628

原创 Encoder-Decoer模型共享embedding矩阵,embedding矩阵的参数更新问题

最近做生成式问答,尝试用bert做encoder,transformer-decoder做decoder框架来做。遇到一个问题,就是我想让decoder共享bert的embedding矩阵,但是由于设置了decoder和encoder学习速率不同,因此,我不知道embedding矩阵参数如何更新?会不会收到decoder端的影响,于是做了下面的实验。import torchimport torch.nn as nnclass Encoder(nn.Module): def __init__

2022-03-29 21:26:49 1194

原创 预训练语言模型mask函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask解析

预训练语言模型中的非常重要的任务是MLM任务,MLM任务需要对原始文本进行mask。transformers库已经集成了预训练语言模型中的mask机制,这里分析其中的两个函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask。1.1DataCollatorForLanguageModeling这个类实现了Bert模型中的MLM任务中提出的mask机制。下面我对照transformers库中的原始代码讲解。class DataCol

2022-02-27 22:29:54 5411

原创 CSDN markdown语法规则

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-02-25 20:00:32 107 1

原创 neo4j环境配置以及在python中操作neo4j

安装https://blog.csdn.net/weixin_44293236/article/details/89467489简单使用https://cloud.tencent.com/developer/article/1387732python中操作neo4jhttps://zhuanlan.zhihu.com/p/82958776https://blog.csdn.net/yangfengling1023/article/details/82049715...

2021-12-16 00:21:01 860

原创 python 用“()“生成生成器

如上图所示,y是一个生成器,而不是一个元组,可以用next访问。生成器的特点是所有元素只能遍历一次。如果要生成一个迭代器,可以用"[]"。

2021-12-13 18:44:38 564

原创 BertTokenizer在处理中英文混合序列中遇到的问题

直接上代码:from transformers import BertTokenizerpath = '../PTM/bert-base-zh'tokenizer = BertTokenizer.from_pretrained(path)text_1 = '①Goodpasture综合征'text_2 = '1Goodpasture综合征'text_3 = '@Goodpasture综合征'text_4 = 'Goodpasture综合征'print(tokenizer.tokeni

2021-11-18 15:32:48 2409

原创 pytorch的in-place问题(a+=b 和a=a+b的区别)

import torchdef f_1(mu): eps = 0.01 mu = mu + eps # 相当于创建了新的变量,原变量没有变 def f_2(mu): eps = 0.01 mu += eps # 没有创建新的变量,对原变量进行操作,也就是in-place mu = torch.ones(2, 4)f_1(mu)print(mu)f_2(mu)print(mu)'''tensor([[1., 1., 1.,

2021-08-31 22:43:59 266

原创 python迪杰斯特拉最短路径算法

def findCheapestPrice(n, flights, src): MAX = 1000000 graph = [[MAX] * n for _ in range(n)] visited = [False] * n dist = [MAX] * n dist[src] = 0 for u, v, w in flights: graph[u][v] = w if u == src: dist[

2021-08-20 22:42:48 246

原创 dropout的forward过程及backward反向传播过程

forward过程假设以概率ppp丢弃KKK维输入向量x=[x1,x2,,,xK]x=[x_1, x_2, ,, x_K]x=[x1​,x2​,,,xK​]的某些值。那么经过dropout之后的向量定义为ddd,有x′=dropout(x)x' = dropout(x)x′=dropout(x)这个过程相当于生成一个随机的KKK维的mask,这个mask的生成过程如下:r=rand(K)=[r1,r2,,,rK],其中0<ri<1。mask={0   

2021-08-19 19:48:28 2311

原创 pytorch 实现k-means聚类算法

import torchimport randomimport copyclass K_means(): def __init__(self, data, k): self.data = data self.k = k def distance(self, p1, p2): return torch.sum((p1-p2)**2).sqrt() def generate_center(self): # 随机

2021-08-17 11:33:44 4653

原创 pytorch的scheduler用法

https://zhuanlan.zhihu.com/p/349973983

2021-06-29 14:38:19 3798

原创 pytorch中bool类型的张量作为索引

pytorch中bool类型是可以作为索引的,同时也支持sum等操作。索引时相当于取出为True等位置的元素之后组成一个新的tensor.

2021-06-21 15:48:39 3792

原创 关系抽取(relation extraction)综述

关系抽取的定义关系抽取就是从一段文本中抽取出**(主体,关系,客体)**这样的三元组,用英文表示就是(subject, relation, object)这样的三元组。所以关系抽取,有的论文也叫作三元组抽取。从关系抽取的定义也可以看出,关系抽取主要做两件事:识别文本中的subject和object(实体识别任务)判断这两个实体属于哪种关系(关系分类)。例如,给出如下的句子:刘翔,1983年7月13日出生于上海,中国男子田径队110米栏运行员。我们可以抽取出实体关系三元组实例 (刘翔,出生地,上

2021-05-23 21:26:46 20208 2

原创 wordnet的使用

wordnet教程

2021-04-25 16:18:01 230

原创 K-means算法与GMM和EM之间的关系

EM算法的流程:随机初始化未知参数,初始化值记为θold\theta^{old}θoldE-STEP:求隐变量zzz的后验:p(z∣x;θold)=p(z,x;θold)∫p(z,x;θold)dzp(z|x;\theta^{old}) = {p(z,x;\theta^{old}) \over \int p(z,x;\theta^{old})dz}p(z∣x;θold)=∫p(z,x;θold)dzp(z,x;θold)​求完全数据(x,z)(x,z)(x,z)的对数似然关于zzz的后验的期望:

2021-03-20 20:31:50 296

原创 python实现常见排序算法

归并排序def sort(array, l, r): if l == r: return mid = (l + r) // 2 sort(array, l, mid) sort(array, mid + 1, r) merge(array, l, mid, r)def merge(array, l, mid, r): tmp = [] i = l j = mid + 1 while i <= mid and

2021-03-11 11:09:38 121

原创 鉴别器(逻辑回归)估计两个概率分布的概率密度比

概率密度比概率密度比是生成模型的重要组成部分,无论是在VAEs的情况下显式的(比如两个高斯分布之间的KL散度),还是在GANs的情况下隐式的。即我们在计算两个分布之间的KL散度(比如pgp_{g}pg​与pdatap_{data}pdata​之间的KL散度),这通常归结为计算两个概率分布对数的样本平均值。以VAE举例,VAE的ELBO是:ELBO=Eq(z∣x)[logp(x∣z)]−KL[q(z∣x)∣∣p(z)]=Eq(z∣x)[logp(x∣z)]−Eq(z∣x)[logq(z∣x)p(z)]

2021-01-23 14:27:07 966 1

原创 pytorch 计算图

例1假设我们函数是y=(x+w)∗(w+1)y=(x+w)*(w+1)y=(x+w)∗(w+1),我们要求yyy对x和wx和wx和w的导数,应该如何用pytorch来求解。上面的计算图表示y=(x+w)∗(w+1)y=(x+w)*(w+1)y=(x+w)∗(w+1),先计算括号内部的加法,再计算乘法。计算顺序是:a=x+wa=x+wa=x+w,b=w+1b=w+1b=w+1,y=a∗by=a*by=a∗b。用代码来表示:import torchw = torch.tensor([1.], re

2021-01-19 22:50:30 1505 2

原创 Semi-Amortized Variational Autoencoders阅读笔记

假设变分后验为高斯分布,变分参数是λ\lambdaλ,也就是λ=[μ,Σ]\lambda=[\mu, \Sigma]λ=[μ,Σ],输入为xxx,这里的xxx表示一个样本。注意,每个样本都有与之对应的变分参数,也就是样本集X=[x(1),x(2),...,x(N)]X=[x^{(1)}, x^{(2)},..., x^{(N)}]X=[x(1),x(2),...,x(N)],变分参数集Λ=[λ(1),λ(2),...,λ(N)]\Lambda=[\lambda^{(1)}, \lambda^{(2)}, .

2020-12-30 22:40:36 692

原创 pytorch的求导函数backward和torch.autograd.grad()

pytorch中求导可以借助tensor.backward()和torch.autograd.grad()来完成,backward()函数应该很熟悉了,模型的的参数求导一般是使用这个函数来完成。backward()默认是标量对参数求导,如果是向量对参数求导,要传入一个维度和向量一样的tensor。torch.autograd.grad(outputs, inputs, grad_outputs, retain_graph, create_graph, only_inputs)也可用来对参数求导,这函数的参

2020-12-29 22:30:08 1100

原创 ubuntu16.04安装nvidia驱动、cuda和cudann

网上看了很多博客,都没有说明一个问题,那就是这三者需要版本匹配。主要是cuda版本要和驱动版本一致。很多教程中驱动的版本与你安装的cuda的版本并不一定一致。先去官网下载你要安装的cuda的要求的驱动版本,要满足上面的表。之后用sudo chmod +x NVIDIA-Linux-x86_64-450.51.run将其改为可执行文件,记住这个文件所在的文件夹。测试你的电脑有没有装过nvidia驱动。1.1 如果你是刚装的系统,那肯定没有,如果不确定,输入命令nvidia-smi如果提示识别不了,

2020-12-22 13:07:47 1014

原创 jupyter 远程服务器配置

激活你的环境,使用下面的命令安装jupyterpip install jupyter使用下面命令进入~/.jupyter/cd ~/.jupyter生成密码jupyter notebook password会在.jupyter这个目录下面生成文件jupyter_notebook_config.jsonvim jupyter_notebook_config.py,生成一个新的文件。填入下面的内容c.NotebookApp.ip='*' # 星号代表任意ip,这个跟mysql的权限设置一样.

2020-12-14 18:52:37 200

原创 pytorch训练过程中出现nan的排查思路

最常见的就是出现了除0或者log0这种,看看代码中在这种操作的时候有没有加一个很小的数,但是这个数数量级要和运算的数的数量级要差很多。一般是1e-8。在optim.step()之前裁剪梯度。optim.zero_grad()loss.backward()nn.utils.clip_grad_norm(model.parameters, max_norm, norm_type=2)optim.step()max_norm一般是1,3,5。前面两条还不能解决nan的话,就按照下面的流程来判.

2020-12-11 14:20:58 20447 24

转载 画出Dirichlet分布的单纯形图

%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.tri as tri#生成等边三角形corners = np.array([[0, 0], [1, 0], [0.5, 0.75**0.5]])triangle = tri.Triangulation(corners[:, 0], corners[:, 1])#每条边中点位置midpoints = [(corners[(

2020-12-07 15:50:50 1095 1

原创 生成对抗网络实现篇(GAN)

这篇主要是分析如何根据生成对抗网络原理篇(GAN)根据原理篇知道,GAN由两个部件组成,生成器和鉴别器。而且二者优化目标也不同,但是最后都是通过鉴别器的输出来计算的。注意本文将优化目标与损失函数做区分,优化目标和损失函数都是为了达到相同的目的,但是优化目标更加偏向于数学一点,而损失函数是在真正实现GAN时的具体做法。下面会分析。鉴别器的优化目标是让(1)式最大化:Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z;θg)))](1)\tag{1} E_{x \sim p_.

2020-11-28 11:22:18 707

原创 优化算法

优化算法顾名思义就是求解参数的方法,比如在机器学习中,定义好了损失函数如何求解模型的参数,这时候就是用优化算法来解决。常见的优化算法有:坐标轴上升、坐标轴下降、牛顿法、拟牛顿法、最小二乘法、拉格朗日乘数法,梯度下降等。先挖个坑,有时间再更新上述一些算法。不过目前深度学习中最常用的就是梯度下降算法了,梯度下降算法中又包括随机梯度下降(SGD), AdaGrad, RMSProp, Adam等。这里面最常用就是Adam了。现在深度学习框架比如Pytorch, TF等都实现了梯度下降中的很多算法,拿过来用就行了

2020-11-25 10:35:50 643

原创 概率生成模型

夫卡了就

2020-11-13 16:21:52 1314

原创 生成对抗网络原理篇(GAN)

本文整理自B站的白板推导系列。一个例子现在有一批国宝,一个造假专家和一个鉴赏专家。造假专家通过观察国宝,然后仿造工艺品,鉴赏专家通过判断一个工艺品是国宝还是造假专家仿造的,对造假专家进行反馈。同时造假专家也会对鉴赏专家进行反馈,提升鉴赏专家的鉴赏能力。鉴赏专家的目标是通过上面的训练成为高水平的鉴赏专家,造假专家的目标是通过上面的训练成为高水平的造假专家,造出的工艺品能以假乱真。数学描述国宝是真实的,用pdata(x)p_{data}(x)pdata​(x)来描述,假设有N个国宝N个国宝N个国.

2020-11-13 15:35:14 328

原创 python 字典排序

按照key排序,返回还是字典my_dict = {2:25, 0:24, 1:12}data = dict(sorted(my_dict.items(), key=lambda x: x[0]))print(data)# {0: 24, 1: 12, 2: 25}按照value排序,返回还是字典my_dict = {2:25, 0:24, 1:12}data = dict(sorted(my_dict.items(), key=lambda x: x[0]))print(data)

2020-11-12 16:39:24 94 1

原创 将文档表示成图的方法

针对句子级别的任务构建图很容易,一般都是根据句子的依存句法树来构建,但是像文档级别的任务,比如文档分类任务,想要使用很火的GNN网络,应该怎么构建图呢?今天看了4篇论文,都是针对文档级别任务构建图的方法。corpus级别构建图Graph Convolutional Networks for Text Classification, AAAI,2019这篇论文针对文档分类任务,构建了一个corpus level的图,图中的节点总数N=Ndoc+NwordN = N_{doc}+N_{word}N=N

2020-10-15 20:56:54 629 1

原创 linux查看各个文件夹大小

查看当前目录下个各个文件夹大小du -smh ./*查看指定文件夹将./*换成文件夹名即可

2020-10-13 21:54:16 254

转载 正向KL散度与反向KL散度

KL散度的公式是KL[p(x)∣∣q(x)]=∫xp(x)logp(x)q(x)dxKL[p(x)||q(x)] = \int_{x}p(x)log{p(x) \over q(x)}dxKL[p(x)∣∣q(x)]=∫x​p(x)logq(x)p(x)​dx假设真实分布为p(x)p(x)p(x),我们想用分布q(x)q(x)q(x)去近似p(x)p(x)p(x),我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用KL[p∣∣q]KL[p||q]

2020-10-10 16:32:52 4953 2

原创 牛顿法与Hessian矩阵

牛顿法可以用于求解方程的根和无约束最优化问题。其背后的数学原理分别对应的是一阶泰勒展开和二阶泰勒展开。回顾泰勒公式展开:f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+O((x−x0)3)f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3)f(x)=f(x0​)+f′(x0​)(x−x0​)+21​f′′(x0​)(x−x0)2+O((x−x0​)3)牛顿法求解方程的根假设我们要

2020-10-09 15:32:20 2239 1

Udec600_64bit323.msi

建模工具UDEC6.0,UDEC是Universal Distinct Element Code的缩写,即通用离散单元法程序,顾名思义,UDEC是一款基于离散单元法理论的一款计算分析程序。

2020-04-26

空空如也

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

TA关注的人

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