pytorch
文章平均质量分 56
#苦行僧
这是我随心所欲记录笔记的地方,喜欢的方向:| NLP | CV | ML | 搜广推 | SE+AI |。
展开
-
torch中 contiguous(), .view(), .reshape(), .permute(), .transpose()的区别与联系
torch中 contiguous(), .view(), .reshape(), .permute(), .transpose()的区别与联系原创 2023-07-19 17:32:57 · 1412 阅读 · 0 评论 -
pytorch nn.Module中的self.register_buffer()操作
pytorch nn.Module中的self.register_buffer()操作原创 2023-02-11 22:42:42 · 438 阅读 · 0 评论 -
pytorch中的矩阵乘法操作:torch.mm(), torch.bmm(), torch.mul()和*, torch.dot(), torch.mv(), @, torch.matmul()
pytorch中的矩阵乘法操作:torch.mm(), torch.bmm(), torch.mul()和*, torch.dot(), torch.mv(), @, torch.matmul()原创 2023-02-11 18:50:50 · 3272 阅读 · 0 评论 -
pytorch骚操作之梯度累加,变相增大batch size
梯度累加其实是为了变相扩大batch_size,用来解决显存受限问题。有牛x的显卡就不用考虑这骚操作。原创 2021-11-30 19:38:08 · 5970 阅读 · 2 评论 -
在pytorch中实现十折交叉验证
本想在网上找个代码,看到大部分写的代码有点乱,有些直接自己把交叉验证代码撸了出来????,也不知道对不对,我不敢用。然后我还是自己结合sklearn库的交叉验证接口来应用到torch中进行交叉验证。 关于各种交叉验证方式介绍可看这里:Sklearn中不同的数据抽样验证方式 ⭐下面以10折交叉验证为例,结合sklearn库。给出一个在pytorch中进行10折交叉验证的模板:def train_(): passdef eval_(): passimport collectionshisto原创 2021-11-16 21:34:13 · 8214 阅读 · 6 评论 -
pytorch固定随机数种子,使实验结果可复现
有时修改了网络、做了数据预处理、调参等,希望测试下实验结果是否有变化,若不固定随机数种子,那由于神经网络里的一些随机过程和cudnn的优化等问题,会使每次实验结果不一样。所以固定随机数种子,能够使实验结果可复现,方便调参、调试网络。 ????在代码开头按如下配置即可:RANDOM_SEED = 42 # any random numberdef set_seed(seed): random.seed(seed) np.random.seed(seed) torch.manual_s原创 2021-11-09 19:22:09 · 5171 阅读 · 0 评论 -
pytorch的model.eval()和with torch.no_grad()
⭐model.eval() : 主要是用在forward中,通过设置成model.eval(),告诉所有层在 eval 模式,其中涉及到 的BN 和 Dropout 层,这些层在训练和测试的表现是不一样的,比如 dropout 在训练中可能是0-1间的数,但在eval模式则为不使用dropout层。⭐with torch.no_grad() : 会关闭自动求导引擎的, 因此能节省显存,和加速。????Example:# 开启验证模式model.eval()for sample in tqdm(原创 2021-11-09 11:06:59 · 1468 阅读 · 0 评论 -
基于Pytorch的torch.nn.embedding()实现词嵌入层
nn.embedding()其实是NLP中常用的词嵌入层,在实现词嵌入的过程中embedding层的权重用于随机初始化词的向量,该embedding层的权重参数在后续训练时会不断更新调整,并被优化。 nn.embedding:这是一个矩阵类,该开始时里面初始化了一个随机矩阵,矩阵的长是字典的大小,宽是用来表示字典中每个元素的属性向量,向量的维度根据你想要表示的元素的复杂度而定。类实例化之后可以根据字典中元素的下标来查找元素对应的向量。 因为输入的句子长度不一,有的长有的短。长了截断,不够长补齐原创 2021-07-28 15:21:45 · 7576 阅读 · 5 评论 -
torchtext使用教程(文本预处理、数据集封装)
????torchtext是一个用于文本预处理的库,使用起来也十分简便。 这是torchtext的github链接:https://github.com/pytorch/text它主要包含了以下3大组件:⭐Field对象: 指定要如何处理某个字段,比如指定分词方法,是否转成小写,起始字符,结束字符,补全字符以及词典等。⭐Dataset类: 用于加载数据,torchtext的Dataset是继承自pytorch的Dataset,提供了一个可以下载压缩数据并解压的方法(支持.zip, .gz, .原创 2021-08-01 23:32:16 · 3270 阅读 · 1 评论 -
pytorch如何精确冻结某一层的参数?
【这段跟你没关系的话,直接跳到后面简单举例看】 ????有时候,我们加载一些预训练模型可能不想更新其中的某些参数,如在bert预训练模型中,我加载了 ‘bert-base-uncased’ 预训练模型(其是为下游任务提供特征提取的模型),但是这里用的是BertForSequenceClassification类去加载的话,它会在’bert-base-uncased’ 模型基础上加个分类层。假若我们不想fine-tune这个bert层,只想更新分类层,那就需要冻结bert层。model = Bert原创 2021-08-09 14:32:33 · 1592 阅读 · 0 评论 -
Pytorch的损失函数BCELoss(), BCEWithLogitsLoss(), nn.CrossEntropyLoss()区别
????(BCELoss)BCEWithLogitsLoss用于单标签二分类或者多标签二分类,输出和目标的维度是(batch,C),batch是样本数量,C是类别数量,对于每一个batch的C个值,对每个值求sigmoid到0-1之间,所以每个batch的C个值之间是没有关系的,相互独立的,所以之和不一定为1。每个C值代表属于一类标签的概率。如果是单标签二分类,那输出和目标的维度是(batch,1)即可。 BCELoss是CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntr原创 2021-08-21 21:24:02 · 1703 阅读 · 0 评论 -
torch.nn.Parameter()使用方法
????torch.nn.Parameter可以将tensor变成可训练的,如在transformer的self-attention等一些attention机制中,会用到一些可训练的权重矩阵,这时用torch.nn.Parameter在模型中创建这些矩阵即可随着模型的训练不断更新最优化。 使用方法:self.w = torch.nn.Parameter(torch.FloatTensor(hidden_size)) 含义是将一个固定不可训练的tensor转换成可以训练的类型parameter,并将原创 2021-08-27 11:54:11 · 7684 阅读 · 0 评论