
Pytorch使用
文章平均质量分 62
Bingoyear
自信人生二百年,会当击水三千里。
展开
-
PaLM中ROPE位置编码实现源码解析
可于下面链接中LLaMA中ROPE实现做对比。,拆解后可以得到下式。原创 2023-08-25 10:31:26 · 1103 阅读 · 0 评论 -
LLaMA中ROPE位置编码实现源码解析
1、Attention中q,经下式,生成新的q。m为句长length,d为embedding_dim/head。2、LLaMA中RoPE源码。原创 2023-08-24 16:26:51 · 3042 阅读 · 0 评论 -
Darknet转为Pytorch
Darknet转为Pytorch原创 2022-04-18 16:05:16 · 1050 阅读 · 0 评论 -
pytorch中AdaGrad优化器源码解读
1. AdaGrad算法花书中截图,随便找了一张。2.源码def step(self, closure=None): """Performs a single optimization step. Arguments: closure (callable, optional): A closure that reevaluates the model and returns the loss. """ loss = None原创 2021-06-10 15:46:22 · 715 阅读 · 0 评论 -
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace o
错误如下RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.IntTensor [12, 1, 10]] is at version 2; expected version 1 instead. Hint: enable anomaly detection to find the operation that fai原创 2021-01-22 10:19:01 · 361 阅读 · 0 评论 -
GPU使用错误:维度不匹配
错误:上述错误看着像是维度不匹配,实际是生成数据的错误1、GPU数量2,使用Dataparallel加载inputs:[batch_size, length]其中的一个输入,即bert中positional embedding,偷了个巧,反正每个样本其值都一样,所幸在DataLoader中将其维度设置为[1, length, embed_dim],然后就悲剧了。模型进行数据并行时,例如这里是两块GPU,实际是将数据分成两份,按照batch_size的维度进行分配。如果positional emb原创 2020-11-19 15:25:18 · 1642 阅读 · 1 评论 -
交叉熵损失公式与手动计算
1、交叉熵损失函数交叉熵的公式有多种形式,一般写作loss=−1n∑j=1nyjlnaj(∗∗)loss=-\frac{1}{n}\sum_{j=1}^{n}y_jlna_j (**)loss=−n1j=1∑nyjlnaj(∗∗)lossj=−yjlnaj(1)loss_j=-y_jlna_j (1)lossj=−yjlnaj(1)lossjloss_jlossj表示第j个样本的损失。aja_jaj表示softmax函数输出。yjy_jyj表示第j个样本的真实标签,为o原创 2020-07-30 10:39:07 · 4142 阅读 · 0 评论 -
TypeError: zip argument #1 must support iteration
利用pytorch中的dataparallel时,遇到一个bug[Previous line repeated 1 more time]TypeError: zip argument #1 must support iteration在单个gpu上可以正常训练加验证,双块gpu时,在验证时出现上述错误,后来发现是因为eval时,模型返回的是个标量(list)。解决方法:将模型返回数据改为...原创 2020-04-24 14:58:49 · 6876 阅读 · 6 评论 -
pytorch中SGD源码解读
def step(self, closure=None): """Performs a single optimization step. Arguments: closure (callable, optional): A closure that reevaluates the model and...原创 2020-03-25 18:15:59 · 5408 阅读 · 7 评论 -
pytorch中Adam优化器源码解读
1. 调用方法torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)参数:weight_decay : L2正则化的系数amsgrad:在更新时,是否保留梯度的二阶历史信息2.源码 def step(self, closure=None):...原创 2020-03-25 18:14:25 · 12154 阅读 · 9 评论 -
pytorch中修改现有层及自定义层
1、在现有层上添加参数,Linear层如下,添加weight_c参数import torchfrom torch.nn.parameter import Parameterfrom torch.nn.modules.module import Modulefrom torch.nn import functional as Ffrom torch.nn import initcla...原创 2020-03-25 10:10:22 · 1955 阅读 · 0 评论 -
NLP中的基本网络
nlp中的文本,基本都可以表示为[ batch, seq, embed_dim] 的形式CNN一般使用一维卷积,因为一维卷积变换的是最后一个维度,所以变换文本形状为 [batch, embed_dim, seq]。# 一维卷积是在最后一个维度进行m = nn.Conv1d(in_channels=16, out_channels=33, kernel_size=3, stride=2)...原创 2020-03-11 14:53:24 · 1512 阅读 · 0 评论 -
pytorch中Schedule与warmup_steps的用法
lr_scheduler相关lr_scheduler = WarmupLinearSchedule(optimizer, warmup_steps=args.warmup_steps, t_total=num_train_optimization_steps)其中args.warmup_steps可以认为是耐心系数num_train_optimization_steps为模型参数的总更...原创 2020-02-27 16:38:27 · 15942 阅读 · 0 评论 -
样本不均衡问题与损失函数
focal loss用来解决样本不均衡的分类问题。假设正样本(label=1)少,负样本多,定义focal loss如下Loss = -[alpha*(1-y_hat)^2yln(y_hat)+ (1-alpha)y_hat^2(1-y)*ln(1-y_hat)]其中y_hat:(batch, seq, tags),预测出的y: (batch, seq, tags)alpha:(1, ...原创 2019-12-03 16:24:11 · 2262 阅读 · 1 评论 -
pytorch中梯度截断
LSTM可能出现梯度爆炸,训练时,加上梯度截断param.grad.data.clamp_(-grad_clip, grad_clip)torch.clamp(min,max)原创 2019-12-03 16:03:59 · 5035 阅读 · 0 评论 -
torch.nn.utils.rnn.pad_sequence用法
torch.nn.utils.rnn.pad_sequence(label_tokens, batch_first=True, padding_value=-1)label_tokens: list矩阵,shape=[batch_size, N] ,N长度不一batch_first:默认batch_size在第一维度padding_value:填充的值返回[batch_size, M]...原创 2019-11-25 14:55:02 · 8112 阅读 · 0 评论