
pytorch
想念@思恋
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DataLoader批量读取数据
加载到DataLoader中之后,DataLoader会通过类似字典的方式读取CustomDataset中的数据,达到批量处理的效果。使用DataLoader的小例子,这里CustomDataset类的__getitem__方法需要返回tensor。原创 2024-04-19 22:31:07 · 469 阅读 · 0 评论 -
torch.scatter_
torch.scatter_原创 2022-07-17 22:28:29 · 506 阅读 · 2 评论 -
文本生成相关顶会、代码运行环境、注意事项
1、EMNLP-2019-**Text Summarization with Pretrained Encoders**原创 2022-06-13 18:03:05 · 543 阅读 · 1 评论 -
self-attention和rnn计算复杂度的对比
Attention is all you need论文中的实验分析部分罗列了self-attention和rnn的复杂度对比,特此记录一下自己对二者复杂度的分析。注意:n表示序列长度,d表示向量维度。1、self-attention的复杂度为O(n2⋅d)O(n^{2} \cdot d)O(n2⋅d),其来源自self-attention计算公式:Attention(Q,K,V)=Softmax(QKTdk)VAttention(Q,K,V)=Softmax(\frac{QK^{T}}{\sq.原创 2022-04-01 09:48:18 · 9893 阅读 · 4 评论 -
ImportError: DLL load failed: 找不到指定的模块。
Traceback (most recent call last): File "D:\ProgramData\Anaconda3\envs\py36\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "D:\ProgramData\Anacon原创 2022-03-27 19:27:08 · 548 阅读 · 0 评论 -
在优化器中设置不同学习率
model = MyModel(**args)# 不同层使用不同学习率param_optimizer = list(model.named_parameters())# pretrain model paramparam_pre = [(n, p) for n, p in param_optimizer if 'bert' in n]# downstream model paramparam_downstream = [(n, p) for n, p in param_optimizer if原创 2021-12-11 11:15:05 · 1406 阅读 · 0 评论 -
pytorch使用DataParallel时遇到的几个问题
import Modelimport torchdevice = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = Model(input)model.to(device)model = torch.nn.DataParallel(model)...1、问题1:ValueError: only one element tensors can be converted to Python scalars原创 2021-11-15 15:58:05 · 3123 阅读 · 0 评论 -
重新预训练BERT
在面试时经常有面试官问有没有做过Bert的预训练,今天特地记录一下。参考链接:https://blog.csdn.net/weixin_43476533/article/details/107512497https://blog.csdn.net/qq_22472047/article/details/115528031"""transformers:version-4.5.1个人感觉:数据预处理是比较麻烦的一个步骤,因为每个人的数据格式是不同的;而运行代码则大同小异。本次预训练仅使用了M.原创 2021-11-09 19:10:05 · 1964 阅读 · 4 评论 -
使用fastnlp时遇到的问题
1、tester中对验证集的测试在哪里?回答:在tester中的test函数中,这里需要注意的是,test函数中没有直接调用SpanFPreRecMetric函数计算F1,而是调用了其继承的Metric基类,来调用SpanFPreRecMetric中的evaluate方法。2、fastnlp中的装饰器怎么使用?通过使用__getattr__方法,调用不同时刻遇到的不同函数。3、inspect模块使用了spect = inspect.getfullargspec(func)方法,获得函数参.原创 2021-04-07 11:29:54 · 721 阅读 · 3 评论 -
pytorch中矩阵的维度变化
1、view()函数,该函数可任意改变矩阵形状。要求数据必须时连续存储的,通常在此操作前一步使用contiguous()函数。contiguous()函数返回一个连续内存空间,与原张量数据相同。import torchtorch.manual_seed(1)a = torch.randn(3, 4)b = a.view(2, 6)c = a.contiguous().view(2,6)'''print(a)a[0][0] = 1.111print(a)print(b)prin.原创 2021-09-22 13:49:57 · 931 阅读 · 0 评论 -
WarmupLinearSchedule为什么先升后降
#num_train_optimization_steps = int(len(train_data) / args.train_batch_size / args.gradient_accumulation_steps) * args.num_train_epochsclass WarmupLinearSchedule(_LRSchedule): """ Linearly increases learning rate from 0 to 1 over `warmup` fractio原创 2021-09-20 16:45:33 · 1410 阅读 · 0 评论 -
No such file or directory: ‘:/usr/local/cuda-10.1:/usr/local/cuda-10.1/bin/nvcc‘:
安装apex时,遇到下面的问题FileNotFoundError: [Errno 2] No such file or directory: ‘:/usr/local/cuda-10.1:/usr/local/cuda-10.1/bin/nvcc’: ‘:/usr/local/cuda-10.1:/usr/local/cuda-10.1/bin/nvcc’解决方案:# 命令行输入export CUDA_HOME=/usr/local/cuda-10.1分析原因按照给定的路径,打开相.原创 2021-09-16 10:05:12 · 8651 阅读 · 1 评论 -
实例:SGD在神经网络中的应用及其反向传播过程
利用神经网络模拟直线,并验证自己对反向传播的理解。具体推导见文章末尾。import torchimport torch.nn as nnimport torch.optim as optimimport mathimport randomimport numpy as npimport torch.nn.functional as F# 设置随机种子def setup_seed(seed): torch.manual_seed(seed) # 为cpu分配随机种子 .原创 2021-09-05 15:56:06 · 750 阅读 · 1 评论 -
model.eval()是否会影响参数的更新
在知乎看到一篇文章,https://zhuanlan.zhihu.com/p/357075502,里边提到model.eval模式不会影响各层的gradient计算行为,即gradient计算和存储与training模式一样,只是不进行反向传播(back probagation)。这个地方的不进行反向传播让我感觉有点迷惑,是不使用loss.backward()呢,还是说用了loss.backward()也不起作用呢?虽然我感觉应该是第一种结论(不使用loss.backward()),但还是做了一个例子.原创 2021-08-30 12:49:36 · 2628 阅读 · 1 评论 -
pytorch拟合直线和曲线
'''其实这是一个错误示例,因为将x输入神经网络时,把x=[1,2,3,...,100]作为一个整体输入到了模型中!!错误原因在于:每个坐标都应该有一个向量表示,如果把x作为一个整体输入到模型中,相当于x是某个数的向量。改错方案:将x变化为二维向量,即x = [[1],[2],[3],...,[100]],然后输入到网络中,经过线性变换和非线性变化,得到结果。'''import torchimport torch.nn as nnimport torch.optim as optimimpo原创 2021-08-30 12:31:16 · 804 阅读 · 0 评论 -
model.eval()和with torch.no_grad()对梯度计算的影响
import torchimport torch.nn as nnclass model(nn.Module): def __init__(self, b): super(model, self).__init__() self.b = b def forward(self, x): y = torch.pow(x, 2) return yx = torch.tensor([1.0, 2.0, 3.0], require原创 2021-08-30 10:44:52 · 638 阅读 · 0 评论 -
对dropout的一点理解
https://pytorch.org/docs/stable/generated/torch.nn.Dropout.html?highlight=dropout#torch.nn.DropoutDropout–(仅应用于模型的训练过程–model.train())1、dropout会将tensor元素以概率p置零;2、非零的元素会变为原来的1/(1-p)倍数。如下例所示:import torchinput = torch.randn(4, 5)dropout = torch.nn..原创 2021-07-22 13:35:22 · 310 阅读 · 0 评论 -
transformer的self-attention中,mask是怎么起作用的
import torchtorch.random.manual_seed(1)torch.set_printoptions(profile='full')mask_1 = torch.tensor([[1, 1, 0], [1, 1, 1], [1, 0, 0], [1, 0, 0]])mask_2 = torch.tensor([[[1, 1, 0],原创 2021-07-19 17:08:02 · 1770 阅读 · 1 评论 -
pytorch除法之求元素在当前行所占比例
import numpy as npimport torch# max_seq_length = 3# max_ngram_in_seq = 2ngram_positions_matrix = np.array([[10, 12], [10, 3], [2, 3]])ngram_positions_matrix = torch.from_numpy(ngram原创 2021-05-18 20:36:07 · 405 阅读 · 0 评论 -
tensor.max()
tensor在不同维度比较大小,并取最大值# 给定一个三维矩阵--[batch_size, n_tags, n_tags]import torchscore = torch.tensor([[ [1,2,7], [4,8,6], [3,5,9]], [ [8,1,3], [6,9,4], .原创 2021-04-26 14:46:37 · 9501 阅读 · 2 评论 -
pytorch加法广播操作
在查看fastnlp实现的CRF时,在前向传播过程中计算emit_score时遇到了加法广播操作,如下所示tmp = alpha.view(batch_size, tag_num, 1) + emit_score + trans_score # 上一个位置得分加上当前得分'''其中,alpha是上一个位置的得分,大小为[batch_size, tag_num]emit_score是发射得分,即word-->label得分,对应模型的hidden,大小为[batch_size, 1.原创 2021-04-22 17:03:17 · 1185 阅读 · 0 评论 -
ZeroDivisionError: float division by zero
更新学习率时,分母为0.0,即group[‘t_total’]=0.0# 报错BERT/optimization.py", line 169, in step lr_scheduled = group['lr'] * schedule_fct(state['step']/(group['t_total']), group['warmup'])ZeroDivisionError: float division by zero解决方案:加入float(“1e-8”)lr_schedu.原创 2021-04-11 17:17:27 · 35442 阅读 · 0 评论 -
no module named ‘apex‘
官方安装'''我的环境Linux-Ubuntu 16.04.7 LTSpython=3.7pytorch=1.4cuda=10.1'''git clone https://github.com/NVIDIA/apexcd apexpip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./'''三步走,安装失.原创 2021-04-11 16:18:18 · 826 阅读 · 0 评论 -
Providing a bool or integral fill value without setting the optional `dtype` or `out`...
使用fastnlp的时候,由于使用的pytorch==1.6.0,而fastnlp版本较低,出现以下问题:Traceback (most recent call last): File "train_zen_cn.py", line 175, in <module> data_bundle, embed, bi_embed, tencent_words_embed, train_feature_data, dev_feature_data, test_feature_data,.原创 2021-03-20 20:02:53 · 706 阅读 · 1 评论 -
查看nn.Embedding(word_nums, hid_dim)的均值和方差是否是0,1
import torchimport torch.nn as nntorch.manual_seed(66)torch.cuda.manual_seed(66)words = nn.Embedding(100, 200)w0 = torch.tensor(0)w1 = torch.tensor(1)w2 = torch.tensor(2)w3 = torch.tensor(3)w4 = torch.tensor(4)w5 = torch.tensor(5)w6 = torch.te原创 2021-03-19 15:14:33 · 265 阅读 · 0 评论 -
pytorch中的torch.from_numpy()
https://blog.csdn.net/qq_26020233/article/details/89007762Tensor中并不储存数据,而是存储有对应numpy数组的数据指针的拷贝import numpy as npimport torcha = np.array([1,2,3])b = torch.from_numpy(a)print("b 变化前:",b)b += 1print("a 变化后:",a)print("b 变化后:",b)print("a的地址:",id(.原创 2021-02-27 21:46:46 · 6106 阅读 · 0 评论 -
程序描述~
pos_mask_matrix = torch.clamp(pos_mask_matrix.float(), 0, 1) # 将tensor限制到0-1之间exp_u_pos = torch.exp(u_pos)delta_exp_u_pos = torch.mul(exp_u_pos, pos_mask_matrix)sum_delta_exp_u_pos = torch.stack([torch.sum(delta_exp_u_pos, 2)] * delta_exp_u_pos.shap.原创 2021-02-24 17:20:19 · 238 阅读 · 0 评论 -
pytorch问题集锦
1、PyTorch 中,nn 与 nn.functional 有什么区别?https://www.zhihu.com/question/66782101原创 2021-02-24 14:43:22 · 129 阅读 · 0 评论 -
gate mechanism
import torch.nn as nnimport mathimport torchclass GateConcMechanism(nn.Module): def __init__(self, hidden_size=None): super(GateConcMechanism, self).__init__() self.hidden_size = hidden_size self.w1 = nn.Parameter(torch.Tenso原创 2021-02-08 10:47:20 · 272 阅读 · 0 评论 -
pytorch中的in-place操作
pytorch文档https://pytorch.org/docs/stable/tensors.html?highlight=masked_fill#torch.Tensor.masked_fill_in-place,即原地操作符,直接在原来的内存上改变变量的值,可以称为原地操作符(以masked_fill_()和masked_fill()为例说明)...原创 2021-01-08 21:35:09 · 1398 阅读 · 2 评论 -
pytorch中,设置随机种子,适用于NER实验
import randomimport numpy as npimport torchdef setup_seed(seed) torch.manual_seed(seed) #为cpu分配随机种子 if torch.cuda.is_available(): torch.cuda.manual_seed(seed) #为gpu分配随机种子 torch.cuda.manual_seed_all(seed)#若使用多块gpu,使用该命令设置随机种子 random.seed(seed)原创 2020-12-28 16:26:08 · 328 阅读 · 0 评论 -
pytorch中的BatchNorm和LayerNorm
参考文章https://blog.csdn.net/weixin_39228381/article/details/107896863https://blog.csdn.net/weixin_39228381/article/details/107939602BatchNorm是在batch方向(每个batch的列方向)进行归一化:import torch.nn as nnimport torchif __name__ == '__main__': norm = nn.BatchNo.原创 2020-12-15 15:56:24 · 1835 阅读 · 0 评论 -
pytorch中model.train()和model.eval()的区别
model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层。1、model.train()和model.eval()对应的源代码,如下所示,但是仅仅关注这一部分是不够的,现在需要记住当前的self.training的值是True还是False。 def train(self, mode=True): r"""Sets the module in training mode. This has.原创 2020-12-15 14:52:45 · 5303 阅读 · 3 评论 -
data.detach().cpu().numpy()作用
import torchif __nane__ == '__main__': if torch.cuda.is_available(): device = 'cuda' else: device = 'cpu' data = torch.rand(2,3, requires_grad=True) print(data) data_detach = data.detach() print('detach():', data_detach ) data_cpu = data.d原创 2020-11-30 19:02:27 · 5080 阅读 · 4 评论 -
使用关系抽取模型SpanBERT遇到的问题
在google colab安装apex运行以下程序,安装apex !git clone https://github.com/NVIDIA/apex cd apex !pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" 运行程序后,仍然出现问题ImportError: cannot import name 'FP16_Optimizer'ImportErro..原创 2020-08-16 15:30:17 · 849 阅读 · 0 评论 -
定义一个可学习的参数,并初始化
一定不要忘记初始化,否则可能会出错!!!class NewMatrices(nn.Module):#[16, 1, 400]-->batch_size必须是16,若不满足,则丢弃 def __init__(self, batch_size, input_dim, output_dim, bias_dim=128, dropout=0.1): super(NewM...原创 2020-04-26 22:05:57 · 880 阅读 · 0 评论 -
在fastNLP框架中加入LSTM遇到的一个问题
Traceback (most recent call last):File “train_tener_cn.py”, line 176, in use_tqdm=True, print_every=300, save_path=None)File “/usr/local/lib/python3.6/dist-packages/fastNLP/core/trainer.py”, line ...原创 2020-04-26 15:29:08 · 703 阅读 · 0 评论 -
pytorch和tensorflow离线下载
https://download.pytorch.org/whl/torch_stable.html原创 2020-04-25 17:52:02 · 5278 阅读 · 1 评论 -
torch.shape()三维矩阵降为二维
import torchif __name__ == '__main__': a = torch.tensor([ [ [1,2,3,2,1], [2,5,6,3,6] ], [ [2,1,5,9,8], [4,6,8,1,1] ] ],dty...原创 2020-04-15 00:01:32 · 9056 阅读 · 0 评论 -
pytorch的bert预训练模型下载
pytorch的bert预训练模型(pretrained_model_name_or_path),直接复制链接,迅雷下载PRETRAINED_VOCAB_ARCHIVE_MAP = { 'bert-base-uncased': "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-vocab.tx...原创 2020-04-08 18:20:10 · 7916 阅读 · 2 评论