pytorch
各方面的写一写
wenjurongyu
程序员第一要义:把遇到的东西写成文档。
展开
-
pytorch+huggingface+bert实现一个文本分类
rnn模型的本质只需要注意输入的形状:input:[seq_length, batch_size, feature_size] ,hidden_size:[num_layers, batch_size, hidden_size]。返回的结果也只有两种:[seq_length], [batch_size, seq_length]。tokenizer(text):返回字典,包含:input_ids, token_type_ids,attention_mask。7, 读取数据,进行训练。8,读取模型进行预测。原创 2023-12-02 14:33:07 · 459 阅读 · 0 评论 -
torch模型保存
模型保存的本质就是利用pickle模块进行序列化。序列化到文件,从文件反序列化回来的对象,要么是Python自定义的对象,要么是本文件中已经定义的类。torch模型保存。原创 2023-12-01 22:32:29 · 135 阅读 · 0 评论 -
AttributeError Can‘t get attribute ‘Model‘ on module ‘main‘
torch.load时会出现这种错误,本质是在当前文件内运行时并没有发现Model类。AttributeError经常是说明调用了某一个类没有的属性。原创 2023-12-01 11:57:49 · 613 阅读 · 0 评论 -
tensor.topk 以及tensor.argmax
topk(self, k, dim=None, largest=True, sorted=True):,返回两个值,values与indices。argmax(self, dim=None, keepdim=False): 返回Tensor。tensor.topk 以及tensor.argmax。原创 2023-12-01 11:30:13 · 333 阅读 · 0 评论 -
pytorch-训练模型通用流程。
模型的训练基本上就是确定两个事,一个是优化器(torch.optim),一个是损失函数(nn.MSELoss, nn.CrossEntropyLoss, nn.NLLoss)。损失函数:需要datasets。这要是为什么损失函数提供类接口原因。原创 2023-11-26 18:17:36 · 62 阅读 · 0 评论 -
torch.tensor 、torch.Tensor 、torch.detach()、tensor.data、tensor.clone
tensor.data、tensor.detach与原张量,其中一个数值变化其他两个也随之变化,但是detach/tensor.data不参与原张量所在的微分传导图。注意:torch.Tensor(int1, int2,int3)会创建[int1, int2,int3]形状的张量,如果传入列表元组等,就会返回该列表元组张量。首先注意一点:在torch中,可导张量计算出的新张量也是可导的,新张量与原张量具有可导连接,那么原张量就不是叶子张量,新张量成了叶子张量。原创 2023-11-26 17:01:38 · 121 阅读 · 0 评论 -
pytorch-TensorDataset与DataLoader使用
【代码】pytorch-TensorDataset与DataLoader使用。原创 2023-11-25 16:07:30 · 65 阅读 · 0 评论 -
pytorch autograd模块
pytorch中张量分为可导张量和不可导张量,即requires_grad参数是否为TRUE,默认是False。注意,可导张量计算得出的新张量也是可导的,不可导张量计算的出的新张量也是不可导的。方式三:torch.set_grad_enabled(False),除了声明可导张量以外,所有新生成的张量均不可导。torch.set_grad_enabled(True),恢复成默认状态。方式一:with torch.no_grad():在with范围内,所有由可导张量计算得出新张量都不可导。原创 2023-11-25 16:04:05 · 66 阅读 · 0 评论 -
pytorch-tensor的数据类型
注意:torch.Tensor(int1, int2,int3)会创建[int1, int2,int3]形状的张量,如果传入可迭代,就会将改可迭代对象变成张量。torch.FloatTensor=torch.Tensor 32位。torch.DoubleTensor 64位。torch.ShorTensor 16位。torch.LongTensor 64位。torch.IntTensor 32位。原创 2023-11-25 01:34:53 · 70 阅读 · 0 评论 -
pytorch-scatter解释
举个二维的例子,用Python重写一下就很明白了,非常简单。注意:scatter返回新张量,scatter_在原张量上修改。torch中的默认都是这样,例如torch.tensor.data.zero_()就是直接在原张量上操作。用这个特性,将labels改成one-hot编码。pytorch-scatter解释。原创 2023-11-24 23:29:38 · 47 阅读 · 0 评论 -
torch.cat 与torch.stack的区别
torch.stack,官方解释是在新的dim上进行拼接。本质是相当于张量unsqueeze(dim)之后,torch.cat(dim=dim)torch.cat:形状是[a, b]的两个张量,dim=0:形成[a * 2, b] , dim=1:形成[a, b* 2]。torch.stack的就是torch.unsqueeze+torch.cat操作。二者都要求拼接的张量形状相同。原创 2023-11-24 23:02:49 · 77 阅读 · 0 评论 -
pytorch-torch.nn.CrossEntropyLoss重写
最关键的一部就是将target改成one-hot形式,即[minibatch] -> [minibatch, C]pytorch-torch.nn.CrossEntropyLoss重写。原创 2023-11-24 17:19:30 · 78 阅读 · 0 评论 -
pytorch-tensor的数据类型
torch.FloatTensor=torch.Tensor 32位。用数据类型创建指定形状的张量,也可以用于type转化类型时使用。torch.DoubleTensor 64位。torch.ShorTensor 16位。torch.LongTensor 64位。pytorch-tensor的数据类型。torch.IntTensor 32位。原创 2023-11-23 22:02:20 · 47 阅读 · 0 评论 -
pytorch常用的四个损失函数
2,label_smoothing:一条样本,并不是确定的属于哪一个分类,而是如下这种概率分布,此时target不再是one-hot形式的矩阵了。3, ignore_index : 当确定某一个分类是非常不可靠的时候,使用ignore_index指定,计算方式如下;原创 2023-11-23 21:44:01 · 73 阅读 · 0 评论 -
torch.tensor形状操作。
注意一点:[seq_length, batch_size, feature_size]和[feature_size, seq_length, batch_size]本身元素排列就不同,从左往右分别是从第一优先级到最后优先级。一个矩阵[seq_length, batch_size, featrue_size],内部的元素可以表示为带下标的元素item[seq, bat, fea],transpose和permute相当于将元素的下标进行转换。最常用的就是reshape,用于模型与模型之间的输入调整。原创 2023-11-22 14:33:33 · 75 阅读 · 0 评论 -
huggingface使用预训练模型入门
huggingface的官方文档的地址:https://huggingface.co/docs/transformers/quicktour。在官方文档中提供了两种加载预训练模型的方式:一是pipline,二是为pytorch/tensorflow/flax框架加载的预训练模型,本文档只对pytorch进行介绍,其他架构除了名字使用方法一样。huggingface提供了很管带有任务头的模型,这里只举个典型例子,加载方式和上述一样,都是from_config/from_pretrain。原创 2023-11-10 18:17:37 · 477 阅读 · 1 评论 -
RNN-torch.nn.RNN
调用pytorch的nn.RNN接口,只需要明确一点,input的默认形状是[seqlength, batchsize, feature_size], hidden的形状是[num_layers, batch_size, hidden_size]。返回两个结果:所有hidden(如果num_layers>1,就返回所有hidden[-1]), 以及最后一个hidden。RNN的本质就是就是:hidden = tanh(linear([input+hidden]))原创 2023-11-09 21:34:46 · 73 阅读 · 1 评论