这张Slides开始介绍如何通过Python中的PyTorch库定义和验证一个简单的Softmax函数,并逐步过渡到Log-Sum-Exp的更新。这里展示了如何用Python代码定义一个朴素的Softmax函数。这个函数接受一个PyTorch张量作为输入,并计算Softmax值。接下来,展示了如何将自定义的Softmax函数与官方的PyTorch
torch.softmax()
函数进行比较。通过生成一个随机张量
x
,分别计算官方Softmax结果
a
和自定义版本
b
。使用
torch.allclose()
函数验证两个输出是否接近。
slides标题提到“Naive & Numerical unstable”(朴素且数值不稳定),表示当前定义的朴素Softmax函数在某些输入情况下会出现问题。slides显示了一个具体的例子,代码使用了一个随机生成的PyTorch张量x,并将其乘以100传入到朴素的naive_softmax()函数中。结果输出中显示张量中的某些值变成了nan(Not a Number),这表明数值溢出或不稳定。
我们的目标是将Softmax运算分块处理(breaking softmax() into chunks)。右侧文字指出,虽然可以将向量分块并分别计算Softmax,但最终问题是如何从分块结果
s1
和
s2
重构出完整的target结果。这也是下一步需要解决的核心问题。