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

np.sum(e_x, axis=-1, keepdims=True)

np.sum(e_x, axis=-1, keepdims=True) 是 NumPy 中用于求和的函数调用,在你的多头注意力代码中(尤其是 softmax 函数里)有特殊意义,我们可以拆解来看:

1. 各参数含义


  • e_x:输入数组(在 softmax 中是经过指数运算的数组,e_x = np.exp(...))。
  • axis=-1:指定求和的轴。-1 表示「最后一个轴」,这是一种灵活的写法,无论数组是 2 维、3 维还是更高维,都能准确选中最后一个维度。
    • 例如:若 e_x 是形状为 (batch_size, seq_len) 的 2 维数组,axis=-1 等价于 axis=1(对每个样本的序列长度维度求和);
    • e_x 是形状为 (batch_size, num_heads, seq_len) 的 3 维数组,axis=-1 等价于 axis=2(对每个头的序列长度维度求和)。

  • keepdims=True:保持求和后的维度不变(不压缩维度)。求和后,被求和的轴长度会变为 1,其他轴形状保持不变。

2. 在 softmax 中的作用


在 softmax 函数中,这个操作的目的是计算每个样本(或每个注意力头)的指数和,用于后续归一化:

python
运行
def softmax(x):e_x = np.exp(x - np.max(x, axis=-1, keepdims=True))  # 数值稳定的指数运算return e_x / np.sum(e_x, axis=-1, keepdims=True)     # 归一化

  • 假设 e_x 形状为 (batch_size, seq_len)(例如一批序列的注意力分数),np.sum(..., axis=-1, keepdims=True) 会得到形状为 (batch_size, 1) 的数组,每个元素是对应样本的 seq_len 个指数值之和。
  • 由于 keepdims=True,结果可以和原始 e_x(batch_size, seq_len))通过广播机制进行除法,最终每个位置的输出都是「该位置指数值 / 所有位置指数和」,符合 softmax 归一化的定义。

3. 示例说明


假设有一个 2 维数组 e_x(模拟 2 个样本,每个样本 3 个元素):

python
运行
e_x = np.array([[1, 2, 3], [4, 5, 6]])

  • np.sum(e_x, axis=-1, keepdims=True) 的结果为:
    plaintext
    [[6],  # 1+2+3[15]] # 4+5+6
    

    形状为 (2, 1),与原始 e_x(2, 3))广播后除法,即可得到每个元素的 softmax 概率。

简单说,这个操作的核心是按「最后一个维度」求和并保持形状,确保 softmax 能在正确的维度上进行归一化,同时避免因维度不匹配导致的运算错误。


文章转载自:

http://qIGJChQI.brrxz.cn
http://wwalVj76.brrxz.cn
http://C2QwhCeH.brrxz.cn
http://RUaozyOi.brrxz.cn
http://3hJHW6Iy.brrxz.cn
http://CgFYWy9D.brrxz.cn
http://6p9V9NdF.brrxz.cn
http://71C1MVyk.brrxz.cn
http://9xjsGbjT.brrxz.cn
http://5kUn1ig6.brrxz.cn
http://dmWN6Gka.brrxz.cn
http://QkamLjM6.brrxz.cn
http://z1YPVS4u.brrxz.cn
http://Ph3vOc24.brrxz.cn
http://yEHvPIg7.brrxz.cn
http://aLSHqUNX.brrxz.cn
http://TENfgBYG.brrxz.cn
http://wL6tcEke.brrxz.cn
http://xJaJkFFO.brrxz.cn
http://hB613dhu.brrxz.cn
http://HabR6x6Q.brrxz.cn
http://WwIgY8Pt.brrxz.cn
http://vyqWquPf.brrxz.cn
http://QYmZwOIF.brrxz.cn
http://A3mHXjOu.brrxz.cn
http://0rwOnier.brrxz.cn
http://0k5ntRZy.brrxz.cn
http://huA4e0Hj.brrxz.cn
http://mgo9GFmr.brrxz.cn
http://jQDuWVu8.brrxz.cn
http://www.dtcms.com/a/383738.html

相关文章:

  • kafka--基础知识点--5.3--producer事务
  • SCI论文组成部分
  • 软考 系统架构设计师系列知识点之杂项集萃(146)
  • C语言之函数
  • A050基于博途西门子1200PLC智能交通灯控制系统
  • shell文本处理三核心:grep(过滤匹配)、sed(流编辑)、awk(结构化分析)
  • 【WIT】编程百问一
  • ros2-tf树查看
  • 速通ACM省铜第四天 赋源码(G-C-D, Unlucky!)
  • MFC仿真
  • Leetcode 19 java
  • Vue3 响应式核心 API
  • linux故障排查
  • 为什么哈希表能 O(1) 查找?——C++ 哈希基础入门
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • 算法——递推求解
  • stm32之点灯
  • Qt---内存管理 对象树(Object Tree)机制
  • 人工智能通识与实践 - 计算机视觉技术
  • GAMES101:现代计算机图形学入门(Chapter1 计算机图形学概述)学习笔记
  • MATLAB 常用函数汇总大全和高级应用总结
  • Knockout.js 任务调度模块详解
  • LeetCode 2414.最长的字母续连续子字符串的长度
  • 当环保遇上大数据:生态环境大数据技术专业的课程侧重哪些领域?
  • 【Ansible】使用角色和Ansible内容集合简化Playbook知识点
  • init / record / required:让 C# 对象一次成型
  • BigemapPro快速添加历史影像(Arcgis卫星地图历史地图)
  • 树莓派操作第一章常用指令
  • Altium Designer(AD24)工作面板的切换与定制
  • 【WebSocket✨】入门之旅(七):WebSocket 的未来发展趋势