You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何理解lambda实现的Softmax函数中numpy的数组运算逻辑?

刚好我之前也琢磨过这个点,其实本质是numpy的向量化运算和广播特性在搞事情,咱们把这个softmax函数拆开来一步步看:

首先先把示例代码贴出来方便对照:

>>> import numpy as np
>>> z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]
>>> softmax = lambda x : np.exp(x)/np.sum(np.exp(x))
>>> softmax(z)
array([0.02364054, 0.06426166, 0.1746813 , 0.474833 , 0.02364054 , 0.06426166, 0.1746813 ])

具体运算逻辑拆解

  • 当你把数组z传入lambda的参数x时,x指代的是整个输入数组,不是单个元素
  • np.exp(x)会执行向量化运算:它会遍历数组里的每一个元素,单独计算该元素的指数值,最后返回一个和原数组形状完全一致的新数组——简单说就是把x[i]转换成np.exp(x[i]),每个元素都走一遍这个操作
  • np.sum(np.exp(x))会把刚才生成的指数数组里的所有元素全部求和,得到一个单一的标量数值
  • 最后一步的除法np.exp(x)/np.sum(np.exp(x))是numpy的广播机制在起作用:numpy会自动把这个单一的求和标量“扩展”成和指数数组相同的形状,然后让指数数组里的每一个元素都除以这个总和,最终得到每个元素对应的softmax概率值

内容的提问来源于stack exchange,提问作者RussAbbott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:20:47