当前位置: 首页 > wzjs >正文

做任务给钱的网站阿里巴巴运营的工作内容

做任务给钱的网站,阿里巴巴运营的工作内容,做海鱼的网站,图片百度搜索“为什么 PyTorch 的 scaled_dot_product_attention 会输出 NaN?如何正确构造 Attention Mask” 引言:看似正常的 mask,为什么会引发 NaN? 在使用 F.scaled_dot_product_attention 构建跨模态或多源注意力时,我们常通…

“为什么 PyTorch 的 scaled_dot_product_attention 会输出 NaN?如何正确构造 Attention Mask”


引言:看似正常的 mask,为什么会引发 NaN?

在使用 F.scaled_dot_product_attention 构建跨模态或多源注意力时,我们常通过 attention_mask 控制每个 query 位置能看到哪些 key。但如果不小心构造出某些 query 对所有 key 都不可见的情况,就会在 softmax 中触发 NaN,进而让模型 loss 崩溃。

这个问题隐蔽却常见,且 PyTorch 不会自动容错,需要我们显式处理。


问题复现:全 -inf 行将导致 NaN

在 PyTorch 的 scaled attention 中:

output = scaled_dot_product_attention(query, key, value, attn_mask)

其中 attn_maskadditive mask,即:

  • 0.0: 表示该位置可见;
  • -inf: 表示该位置被屏蔽,不可 attend。

当某个 query 行的 mask 全为 -inf 时,softmax 输入类似于:

softmax([-inf, -inf, ..., -inf])[NaN, NaN, ..., NaN]

这将污染整个计算图,最终导致 loss 为 NaN。


产生这种情况的常见原因

这种情况经常发生在任务中存在大量 query(例如图像 patch、token、时间步)本身就不应该 attend 到任何 key,例如背景区域或 padding 区域。

因此,虽然逻辑合理,但仍然在数学上不合法


解决方案:fallback 解锁最后一个 key

为避免 NaN,可在转换 bool mask → float mask 时引入一个 fallback:

# attention_mask: [B, Q, K],bool 类型,True 表示“可以 attend”
attention_mask_float = torch.full_like(attention_mask, float('-inf'), dtype=query.dtype)
attention_mask_float.masked_fill_(attention_mask, 0.0)# fallback:避免某些 query 全为 -inf
all_inf_rows = (attention_mask_float == float('-inf')).all(dim=-1, keepdim=True)  # [B, Q, 1]
if all_inf_rows.any():last_key_idx = attention_mask_float.size(-1) - 1fix_mask = torch.arange(attention_mask_float.size(-1), device=attention_mask.device) == last_key_idxfix_mask = fix_mask.view(1, 1, -1)  # reshape for broadcastattention_mask_float = attention_mask_float.masked_fill(all_inf_rows & fix_mask, 0.0)

这样即便某个 query 原本完全不可见,也能保证 softmax 至少有一个有效分布。


可视化建议

可以使用 matplotlib.imshow 直接可视化 [Q, K] 的 mask 分布:

# 黑色:可见(0.0),白色:被 mask(-inf)
vis_mask = (attn_mask == 0.0).astype(np.uint8)
plt.imshow(vis_mask, cmap='Greys', aspect='auto')

可视化能帮助你快速定位全白 query 行,即潜在 NaN 风险点。


总结

条目建议
是否允许 query 全被屏蔽语义上允许,数学上不合法(需处理)
PyTorch 是否兜底否,需用户自己容错
是否应解锁一个 dummy key是,最安全的 fallback 机制
可否通过可视化排查是,黑白图可快速识别空行

http://www.dtcms.com/wzjs/593750.html

相关文章:

  • 在线开发培训网站建设vs网站开发教程
  • 福州优化网站建设广东响应式网站
  • 网站建设竞标ppt给公司做网站数据分析
  • 管理公司网站建设室内设计方案设计说明
  • 太原网站建设搭建网站建设需要的东西
  • 做搜索引擎网站wordpress 移动端检查
  • 电影网站的代理怎么做室内设计公司排名前100
  • 前端网站demo天津做网站的费用
  • 个人网站做什么内容好浙江坤宇建设有限公司网站
  • 新时代文明实践站网址央美老师做的家具网站
  • 百度做网站的服务合同全国教育平台网站建设
  • 网站建设采用的技术wordpress开启报错
  • 江苏泰州网站建设年度网站信息化建设工作计划
  • 手机网站制作系统网站模板编号
  • 哪个网站做螺丝生意好先进网站建设流程
  • 网站建设有没有做的必要在线设计免费
  • 福州网站建设方案咨询广州线上教学
  • 微信小程序网站开发教程简述网络营销的特点是什么
  • 中国新农村建设网站青阳做网站
  • 南京网站设计培训手机网站封装用户体验
  • 宋庄网站建设高端做网站价格
  • 网站定制开发哪家厉害上海网页设计
  • 网站建设的售后服务流程wordpress 导入json
  • 计算机网站开发参考文献怎样才能把网站做好
  • 河北地矿建设集团官方网站公众平台如何做网站
  • 许昌网站建设公司排行榜百度跨境电商平台
  • wdcp 网站迁移网站建设多少钱 小江网页设计
  • 企业网站建设的报价深圳做app网站设计
  • 网站建设需要注意那些点南宁网站制作系统
  • 网站导航布局深圳互联网企业名单