Pytorch中mask是如何实现的代码-阅读文本相似度模型

pytorch环境之mask-rcnn源码实现 文件数据集路径,查看自己的文件名称,进行相应修改。文件数据集路径,查看自己的文件名称,进行相应修改。调整相关非极大值抑制参数【还没有调好,调好再更新】数据集之后修改了其他的配置,其他都不需修改。,有检测出来的,但是还有没有检测出来的。数据集测试,发现一个物体对应多个框。下面这个图片没有检测出来,又改为。设置保存图片路径【圈出框的图片】文件中的学习率修改自己的数值。改为自己的分类个数,我改为。吧,这个图片算了,我放弃了。个,一次给gpu图片个数。越少,学习率就要越低】修改打印损失迭代次数。 阅读详情

Pytorch中mask是如何实现的代码版本1-阅读文本相似度模型

代码参考链接: https://github.com/DA-southampton/TextMatch/tree/master/ESIM

最近在用Pytorch重新ESIM代码,其中关于attention的细节我自己重新梳理了一下,附上代码解读。

我先在有一个batch的数据。Sentence1 维度为[256,32,300],Sentence2的维度为[256,33,300]

维度含义为[batch_size,batch中最大长度,词向量维度]

数据流转ESIM第一个Bilstm之后,维度变化为:Sentence1 维度为[256,32,600],Sentence2的维度为[256,33,600](假设hidden为300)

此时我们需要计算两个句子输出的attention矩阵,以便计算每个句子的加权和。

我这里主要是梳理矩阵的计算方式细节。

核心代码是这个:
https://github.com/DA-southampton/TextMatch/blob/54e24599ce2d4caaa16d68400dc6a404795d44e9/ESIM/model.py#L57

q1_aligned, q2_aligned = self.attention(q1_encoded, q1_mask, q2_encoded, q2_mask)

self.attention 函数对应的是这个函数,如下:
https://github.com/DA-southampton/TextMatch/blob/54e24599ce2d4caaa16d68400dc6a404795d44e9/ESIM/layers.py#L59

class SoftmaxAttention(nn.Module):
        similarity_matrix = premise_batch.bmm(hypothesis_batch.transpose(2, 1).contiguous())  ## 256*32 *33
        # Softmax attention weights.
        prem_hyp_attn = masked_softmax(similarity_matrix, hypothesis_mask)
        hyp_prem_attn = masked_softmax(similarity_matrix.transpose(1, 2).contiguous(), premise_mask)
        # Weighted sums of the hypotheses for the the premises attention,
        # and vice-versa for the attention of the hypotheses.
        attended_premises = weighted_sum(hypothesis_batch, prem_hyp_attn, premise_mask)
        attended_hypotheses = weighted_sum(premise_batch, hyp_prem_attn, hypothesis_mask)
        return attended_premises, attended_hypotheses  

首先我们看一下输入:

q1_encoded:256*32*600 q2_encoded:256*33*600  q1mask torch.Size([256, 32])  q2mask torch.Size([256, 33])

然后对于这个函数,核心操作是这个:

prem_hyp_attn = masked_softmax(similarity_matrix, hypothesis_mask)

similarity_matrix 维度为256*32 33 hypothesis_mask 为25633
我们去看一下masked_softmax这个函数:
https://github.com/DA-southampton/TextMatch/blob/54e24599ce2d4caaa16d68400dc6a404795d44e9/ESIM/utils.py#L29

def masked_softmax(tensor, mask):
    tensor_shape = tensor.size()  ##torch.Size([256, 32, 33])
    reshaped_tensor = tensor.view(-1, tensor_shape[-1]) ## torch.Size([7680, 33])
    while mask.dim() < tensor.dim():
        mask = mask.unsqueeze(1)
    mask = mask.expand_as(tensor).contiguous().float()
    reshaped_mask = mask.view(-1, mask.size()[-1])  ## torch.Size([7680, 33])

    result = nn.functional.softmax(reshaped_tensor * reshaped_mask, dim=-1)  ## 补长位置也就是置为零的位置之后进行softmax
    result = result * reshaped_mask ## 再次置为零,因为上面这个对于补长位置还会有概率共现
    # 1e-13 is added to avoid divisions by zero.
    result = result / (result.sum(dim=-1, keepdim=True) + 1e-13) ## 普通的求概率公式
    return result.view(*tensor_shape)

简单总结一下:
整个mask的代码其实我读起来感觉比较奇怪,我印象中mask的操作,应该是补长的部分直接为负无穷(代码里写一个-1000就可以),但是他这里的代码,是补长的部位置为0,所以
在softmax的时候,虽然为1,但是也有贡献也有概率的输出,虽然很小。所以又把这些部分置为零,然后用每一行的值除以每一行的总和得到了新的概率值,这个概率和补长的部位就没有关系了。
还有一个细节点需要注意的是,比如我的输入是2563233 batch为256,那么我在计算每一行的的时候,完全可以把batch中的数据并起来,也就是变成(256*32)*33

所以我简单总结一下,在这里的mask的操作分为两个步骤:首先补长位置置为零然后计算softmax,随后对softmax的结构补长位置继续置为零,计算简单的分值(各自除以每一行的总和),得到最后的概率值。

基于多任务学习的阅读行为感知AI模型构建与个性化文本生成实战 自然语言处理(NLP)的核心目标之一是让机器理解和生成符合人类认知习惯的文本。传统模型基于概率序列生成,缺乏对人类动态阅读过程的建模。多任务学习技术通过共享底层表示,使模型能同时学习语言规律和人类阅读行为(如注视点、阅读时长),从而构建出能感知认知负荷的文本表示。这种技术价值在于,它能将静态的文本分析与动态的用户体验优化相结合。在工程实践中,基于Transformer架构,通过添加阅读难度预测头并与掩码语言建模任务联合训练,可以构建出阅读行为感知模型。该模型预测的文本难度分数,可应用于个性化文本改写、可读性 阅读详情

相关推荐

基于AI预测人类阅读行为的个性化文本适配技术解析

个性化推荐系统通过分析用户行为数据,实现内容的精准匹配,其核心在于理解用户意图与偏好。在自然语言处理领域,深度学习模型能够捕捉文本的语义特征,而强化学习则通过与环境的交互优化决策策略。这些技术的结合,为构建更智能的推荐引擎提供了可能。具体到阅读场景,通过眼动追踪等数据训练模型,可以预测读者的认知负荷与注意力分布,从而实现文本内容的动态调整与个性化适配。这种技术路径在教育科技、内容创作等领域具有广泛的应用前景,能够有效提升信息传递的效率和用户体验。

weixin_33747129的博客 452

pytorch常用mask命令

文章目录前言1.Tensor.masked_fill_(mask, value)举个例子2.torch.masked_select(input, mask, *, out=None) → Tensor举个例子3.Tensor.masked_scatter_(mask, source)举个例子 前言 mask是深度学习里面常用的操作,最近在研究transformer的pytorch代码,总能看到各种mask的命令,在这里总结一下 1.Tensor.masked_fill_(mask, value) Fil

weixin_41102519的博客 9534

AI模拟人类阅读认知:个性化文本生成的技术原理与实践

自然语言处理(NLP)与认知科学的交叉领域正推动文本生成技术的革新。其核心原理在于,通过机器学习模型分析人类阅读时的认知过程,如注意力分配与理解模式,从而预测文本对不同个体的可读性。这项技术的价值在于,它能将通用的文本内容动态调整为更符合个人认知习惯的形态,显著提升信息传递效率。在应用场景上,它为实现真正的自适应学习系统与无障碍信息获取提供了关键技术路径,最终自然收敛到利用AI模型捕获人类阅读行为并生成个性化文本这一前沿主题。其中,眼动追踪数据与认知负荷预测是构建此类模型的关键热词。

weixin_34054931的博客 375

超平实版Pytorch Self-Attention: 参数详解(尤其是mask)(使用nn.MultiheadAttention)

目录Self-Attention的结构图forward输入中的query、key、valueforward的输出实例化一个nn.MultiheadAttention进行forward操作关于maskReference Self-Attention的结构图 本文侧重于Pytorch中对self-attention的具体实践,具体原理不作大量说明,self-attention的具体结构请参照下图。 (图中为输出第二项attention output的情况,k与q为key、query的缩写) 本文中将使用Pyt

狗狗狗大王的博客 4万+

Transformer原理与PyTorch从零实现:从NLP到视觉与时序

深度学习处理序列数据时,注意力机制通过查询-键-值运算直接建模长距离依赖,突破了循环网络顺序计算的瓶颈。Transformer将自注意力、多头机制、位置编码、残差连接与前馈网络组合为模块化架构,已成为自然语言处理、计算机视觉等领域的通用底座。在工程实践中,理解其内部实现有助于调试模型、优化显存和排查Loss不下降等问题。通过PyTorch从零构建最小可训练的Transformer,并延伸到Vision Transformer、Swin Transformer及时间序列预测等应用,可帮助开发者从API调用走向

anjichan4261的博客 475

从零实现抽象式文本摘要:PyTorch手写Encoder-Decoder详解

抽象式文本摘要是一种基于语义理解与生成的自然语言处理任务,其核心在于建模条件语言概率P(Y|X),而非简单抽取原文片段。它依赖Transformer编码器-解码器架构,通过多头注意力、位置编码、teacher forcing和标签平滑等关键技术实现语义重组与连贯生成。该技术在新闻简报、财报提炼、医疗报告压缩等场景中具备显著优势,尤其适合需逻辑整合与表达创新的应用需求。本文聚焦可解释、可调试的轻量级实现,覆盖数据清洗、动态填充、Noam调度、beam search优化及事实一致性诊断等工程关键环节,助力开发者

weixin_34060741的博客 353

Pytorch中的masked_fill()函数

masked_fill()函数 主要用在transformer的attention机制中,在时序任务中,主要是用来mask掉当前时刻后面时刻的序列信息。此时的mask主要实现时序上的mask。 >>>a=torch.tensor([1,0,2,3]) >>>a.masked_fill(mask = torch.ByteTensor([1,1,0,0]), value=torch.tensor(-1e9)) >>>a >>>tenso

weixin_44737266的博客 5073

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

不读代码就无法识别模型垃圾输出:从重复文本到全零向量的排查实战

在AI模型推理中,输出异常往往以“垃圾结果”形式出现,例如文本生成反复复读、夹杂特殊令牌,或embedding向量全零、充满nan。这类现象容易被误判为模型能力不足,但实际根因大多隐藏在调用代码的细节里。理解transformers的tokenizer构造、attention_mask传递、eval模式切换、pad_token_id配置以及池化策略,是定位问题的关键。从输入构造、预处理、推理参数到后处理,任何一环的疏忽都会导致推理结果不可用。本文通过文本生成与向量模型两个完整案例,演示如何从代码层逐行排查,

weixin_30247307的博客 515

基于Python的BERT文本相似度检测系统源码全解析

文本相似度检测是自然语言处理中的重要任务,传统方法如TF-IDF和Word2Vec难以捕捉深层语义。基于双向Transformer架构的BERT模型通过预训练动态表征词义,为解决语义相似度提供了新方案。在实际工程中,从模型加载、向量编码到相似度计算和结果存储,完整的系统落地涉及Python环境配置、序列填充、池化策略以及MySQL数据库接入等多环节。本文结合一套基于Python的BERT文本相似度检测系统源码,拆解从环境部署到相似度落库的完整流程,涵盖阈值设定、性能优化和常见避坑指南,为毕业设计和实际项目提

weixin_31100517的博客 211

Pytorch mask_select 函数的用法详解

今天小编就为大家分享一篇Pytorch mask_select 函数的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Sentence-Transformers 稀疏编码器语义文本相似度(STS)实战指南:SPLADE 嵌入与相似度计算

本文基于 sentence-transformers 仓库中的 [semantic_textual_similarity 示例](https://link.gitcode.com/i/dd1fb6c3752ad0f0dfac89e17cd7b11c)(配套可运行脚本见 [semantic_textual_similarity.py](https://link.gitcode.com/i/ab94d

gitblog_00898的博客 319

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1103

PyTorch triphard代码理解

首先上代码,这份实现非常简洁优雅! class TripletLoss(nn.Module): """Triplet loss with hard positive/negative mining. Reference: Hermans et al. In Defense of the Triplet Loss for Person Re-Identifi...

zj 4678

基于Java的高校校园点餐系统

本文介绍了一个基于Java技术开发的高校校园点餐系统,该系统以B/S结构为基础,采用MySQL作为数据库,实现了一个高效、便捷的在线点餐平台。系统主要面向三类用户:管理员、用户和食堂工作人员,提供包括用户管理、食堂管理、菜单管理、订单管理等在内的多项功能。通过系统的具体测试,验证了其可行性和有效性,为高校师生提供了一个科学化、系统化的点餐服务。高校校园点餐系统的开发和实现,不仅提高了校园餐饮服务的效率和质量,也为师生提供了一个更加便捷的点餐体验。

a632341031的博客 841

Jev模型入门:从API接入到本地部署的完整实践指南

大模型的应用方式正从单一聊天窗口转向复杂的自动化工作流,而推理模型因具备指令跟随与结构化输出能力,成为构建Agent和数据处理管线的关键组件。Jev作为面向通用场景的推理模型,不仅提供了OpenAI兼容的API接口,还支持本地量化部署,兼顾隐私、可控性与长期成本。本文从模型定位出发,明确Jev与基座模型的差异,随后介绍密钥管理、API调用、参数调优,并深入演示基于Ollama与llama.cpp的本地部署流程,包括GGUF模型文件与chat template的匹配要点。针对实践中的常见问题,如密钥泄露、ma

weixin_29057237的博客 360

如何快速使用ALBERT模型进行中文NLP任务:PyTorch-NPU版本实战指南

ALBERT模型作为BERT的精简版本,在自然语言处理领域展现出了卓越的性能和效率。本文将详细介绍如何利用PyTorch-NPU版本的ALBERT Large v2模型,在中文NLP任务中实现快速部署和高效推理。💡 ## 📊 ALBERT模型的核心优势 ALBERT(A Lite BERT)模型通过参数共享技术,在保持与BERT相似性能的同时,大幅减少了模型参数量。这种设计使得ALBERT

gitblog_09749的博客 741

iOS面试题大全(附带答案)

C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它修饰的变量生命周期是整个源程序。 @1.在函数体内的 static 变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; @2.在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问; @3.在模块内的 static 函数只被这一模块内的其它函数调用,这个函数的使用范围被限

IOSNF的博客 2427

Transformer注意力机制从零实现:原理详解与PyTorch代码实战

注意力机制是深度学习中处理序列数据的核心技术,它摆脱了RNN、LSTM的串行限制,让模型能够直接捕捉任意位置之间的依赖关系。在Transformer架构中,自注意力机制通过QKV映射和缩放点积运算计算token间的相关性,再以softmax加权聚合信息。为增强表达能力,多头注意力将特征投影到多个子空间并行计算,而位置编码则补偿了注意力对顺序不敏感的缺陷。这些基础组件不仅支撑着BERT、GPT等主流NLP模型,也被迁移到Vision Transformer等视觉任务中,成为现代AI系统的基础模块。许多开发者希

weixin_34007020的博客 391

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 819

基于四旋翼模型的火箭型无人机视线角保持控制仿真设计

本文针对火箭型无人机的视线角保持控制问题展开研究。基于四旋翼动力学模型,通过改造设计了一种摄像头朝上安装的特殊无人机系统,用于追踪空中目标。文章详细推导了坐标系定义、运动学和动力学方程,重点分析了摄像头安装与视线几何关系,建立了目标运动模型和视线向量计算方法。通过解算期望姿态角,实现了使机体Z轴始终对准目标的控制目标。仿真结果表明,该系统能有效完成视线角保持任务,为空对空监视等应用场景提供了可行方案。~~~~~

huanghm88的专栏 143

bert-base-chinese功能测评:语义相似度实测效果

本文介绍了基于星图GPU平台自动化部署bert-base-chinese预训练模型镜像的实践方法,结合语义相似度计算任务,展示了该模型在智能客服、文本匹配等场景中的高效应用,助力AI开发者快速构建中文NLP应用。

weixin_33419305的博客 722

LSTM+Transformer混合模型时间序列预测实战教学

LSTM+Transformer混合模型时间序列预测实战教学 毕业设计

8220

Ultralytics FastSAM 推理源码解析:FastSAMPredictor 提示引导分割的实现原理与实战指南

本文以仓库中的 `FastSAMPredictor` 类为切入点,深入剖析 Ultralytics FastSAM(Fast Segment Anything Model)在推理阶段的核心实现:它如何在 YOLO 实例分割管线之上完成"全图分割 + 提示(Prompt)筛选"的两段式工作流,如何分别处理边框(BBox)、点(Point)与文本(Text)三类提示,以及 CLIP 文本-图像相似度计

gitblog_00907的博客 1170

Silvaco TCAD 半导体器件仿真全攻略:从入门到精通

本文介绍了Silvaco TCAD半导体器件仿真平台的核心功能与应用方法。主要内容包括: Silvaco TCAD的核心模块组成(ATHENA工艺仿真和ATLAS器件仿真)及其在半导体研发中的重要作用,能够通过数值仿真预测器件电学特性,显著降低研发成本。 环境配置要点,包括内存分配、文件目录管理和许可证验证,为仿真工作提供基础保障。 仿真核心概念:详细讲解了网格划分策略和物理模型选择原则,强调基于物理直觉的自适应加密网格方法。 以PN结二极管为例,提供了完整的仿真代码示例,涵盖从网格定义、掺杂设置到结果分析

huanghm88的专栏 208

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PyTorch Fairseq项目中的RoBERTa模型详解与应用指南

PyTorch Fairseq项目中的RoBERTa模型详解与应用指南 【免费下载链接】fairseq 项目地址: https://gitcode.com/gh_mirrors/fai/fairseq ...

gitblog_00418的博客 539

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: pytorch处理文本数据代码-处理文本相似度数据
下一篇: ALBERT-更小更少但并不快
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值