参考:https://blog.csdn.net/zziahgf/article/details/78489562
pytorch:
def log_sum_exp(x):
"""Utility function for computing log_sum_exp while determining
This will be used to determine unaveraged confidence loss across
all examples in a batch.
Args:
x (Variable(tensor)): conf_preds from conf layers
"""
x_max = x.data.max()
return torch.log(torch.sum(torch.exp(x-x_max), 1, keepdim=True)) + x_max
假设 NN 个 值的数据集 {xn}Nn=1{xn}n=1N,需要计算的值为:
z=log∑Nn=1exp{xn}z=log∑n=1Nexp{xn}
当采用 softmax 对 multinomial 分布进行参数化时,比如,logistic 回归和有多于 2 个无序类别时,这种计算经常出现.
如果想要计算 log likehood,由于存在归一化常数,也会看到这种表达式.
直接进行计算,则是灾难性的,因为存在下溢(underflow) 和上溢(overflow), 取决于 xnxn 的尺度(sc