- 博客(424)
- 资源 (1)
- 收藏
- 关注
原创 mac m1/m2/m3 pyaudio的安装
但是均失败了,但是问deepseek竟然成功了,下面是deepseek r1给出的方法。在M3 pro芯片上可以成功运行.google了很多方法,也尝试了。
2025-03-30 15:39:48
435
原创 【无标题】
● 对于关系分类器,我们没有采用最传统的二进制交叉熵损失函数,而是采用了和gpointer一样的多标签分类交叉熵损失函数,我们的实验证明,多标签交叉熵损失函数可以很好的解决类别不平衡的问题。● 我们新增了一个关系分类器,由于webnlg数据集多大170个关系类型,我们增加关系分类器,可以提高关系抽取的精确率,同时也增加了一个MOG_LSTM层,可以更好的将bert的信息融入。将单目标多分类交叉熵推广到多标签分类损失函数,适用于总类别数很大、目标类别数较小的多标签分类问题。
2024-10-08 22:49:12
513
原创 trl中的PPO代码解析(炒冷饭版)
不说其他的解释,上来就看代码。建议先对PPO的整体流程有了解。trl的版本为0.4.0,注:【新版的trl中代码更复杂,如果只是想读懂PPO具体怎么用trl实现的,0.4.0版本即可】
2024-09-24 14:46:56
1677
原创 mlstm_biaffine_cyc_fgm
07/16/2024 21:07:27 - INFO - main - ***** Data Summary *****07/16/2024 21:07:27 - INFO - main - Batch size = 6407/16/2024 21:07:27 - INFO - main - Num train steps = 17560607/16/2024 21:07:27 - INFO - main - Num train examples = 5619507/16
2024-07-17 09:26:41
1159
原创 序列并行技术解析(xtuner/deepspeed-uly)
序列并行是用于训练超长文本(64k, 128k等)的技术。一定长度上也可以扩展大模型的长文本能力。
2024-07-09 16:53:39
1542
原创 一文看懂如何增强LLM的长文本处理能力(包含代码和原理解析)
本篇博客是LLM中的RoPE位置编码代码解析与RoPE的性质分析(一)的续集,若对RoPE的性质不了解(比如远程衰减性、周期性与频率特性),建议先看LLM中的RoPE位置编码代码解析与RoPE的性质分析(一)如何增强使用RoPE的LLM的处理长文本的能力我们继续定义模型的训练长度为LtrainL_{train}Ltrain,模型的测试长度为LtestL_{test}Ltest,Ltest>LtrainL_{test} > L_{train}Ltest>Ltrain,定义s=
2024-06-04 17:17:50
1714
原创 LLM中的RoPE位置编码代码解析与RoPE的性质分析(一)
RoPE相关博客都有复杂的数学推导,看起来有一定的难度,本博客没有复杂数学推导,尽量从图解的方式分析RoPE与其对于的性质。
2024-05-27 14:30:50
1555
原创 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
9769
2
原创 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
2513
原创 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
697
原创 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
1428
原创 预训练语言模型mask函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask解析
预训练语言模型中的非常重要的任务是MLM任务,MLM任务需要对原始文本进行mask。transformers库已经集成了预训练语言模型中的mask机制,这里分析其中的两个函数DataCollatorForLanguageModeling和DataCollatorForWholeWordMask。1.1DataCollatorForLanguageModeling这个类实现了Bert模型中的MLM任务中提出的mask机制。下面我对照transformers库中的原始代码讲解。class DataCol
2022-02-27 22:29:54
6780
原创 优快云 markdown语法规则
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-02-25 20:00:32
218
1
原创 neo4j环境配置以及在python中操作neo4j
安装https://blog.youkuaiyun.com/weixin_44293236/article/details/89467489简单使用https://cloud.tencent.com/developer/article/1387732python中操作neo4jhttps://zhuanlan.zhihu.com/p/82958776https://blog.youkuaiyun.com/yangfengling1023/article/details/82049715...
2021-12-16 00:21:01
990
原创 python 用“()“生成生成器
如上图所示,y是一个生成器,而不是一个元组,可以用next访问。生成器的特点是所有元素只能遍历一次。如果要生成一个迭代器,可以用"[]"。
2021-12-13 18:44:38
599
原创 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
2704
原创 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
335
原创 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
291
原创 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
3046
原创 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
4991
原创 pytorch中bool类型的张量作为索引
pytorch中bool类型是可以作为索引的,同时也支持sum等操作。索引时相当于取出为True等位置的元素之后组成一个新的tensor.
2021-06-21 15:48:39
4129
原创 关系抽取(relation extraction)综述
关系抽取的定义关系抽取就是从一段文本中抽取出**(主体,关系,客体)**这样的三元组,用英文表示就是(subject, relation, object)这样的三元组。所以关系抽取,有的论文也叫作三元组抽取。从关系抽取的定义也可以看出,关系抽取主要做两件事:识别文本中的subject和object(实体识别任务)判断这两个实体属于哪种关系(关系分类)。例如,给出如下的句子:刘翔,1983年7月13日出生于上海,中国男子田径队110米栏运行员。我们可以抽取出实体关系三元组实例 (刘翔,出生地,上
2021-05-23 21:26:46
22075
2
原创 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
355
原创 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
170
原创 鉴别器(逻辑回归)估计两个概率分布的概率密度比
概率密度比概率密度比是生成模型的重要组成部分,无论是在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
1170
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
1781
3
原创 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
924
原创 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
1312
原创 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
1226
原创 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
245
原创 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
26232
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
1579
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
798
原创 优化算法
优化算法顾名思义就是求解参数的方法,比如在机器学习中,定义好了损失函数如何求解模型的参数,这时候就是用优化算法来解决。常见的优化算法有:坐标轴上升、坐标轴下降、牛顿法、拟牛顿法、最小二乘法、拉格朗日乘数法,梯度下降等。先挖个坑,有时间再更新上述一些算法。不过目前深度学习中最常用的就是梯度下降算法了,梯度下降算法中又包括随机梯度下降(SGD), AdaGrad, RMSProp, Adam等。这里面最常用就是Adam了。现在深度学习框架比如Pytorch, TF等都实现了梯度下降中的很多算法,拿过来用就行了
2020-11-25 10:35:50
971
Udec600_64bit323.msi
2020-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人