很大的logit如何合适地进行 Softmax?

0. 引言

假设最后的 logit 为:[15664, 15432, 14965],对于这样的数据应该如何处理呢?

1. 直接进行 Softmax

>>> import torch
>>> a = torch.FloatTensor(3, )
>>> a[0], a[1], a[2] = 15664, 15432, 14965
>>> torch.nn.functional.softmax(a)
tensor([1., 0., 0.])

很明显,这样的结果并不是我们想要的。

2. 方法 1:先进行最大最小归一化再进行 Softmax

>>> import torch
>>> a = torch.FloatTensor(3, )
>>> a[0], a[1], a[2] = 15664, 15432, 14965
>>> logit = (a - torch.min(a)) / (torch.max(a) - torch.min(a))
>>> torch.nn.functional.softmax(logit)
tensor([0.4795, 0.3441, 0.1764])

3. 🥳方法 2:先进行 z-score 再进行 Softmax

>>> import torch
>>> a = torch.FloatTensor(3, )
>>> a[0], a[1], a[2] = 15664, 15432, 14965
>>> z_score = (a - a.mean()) / a.std()
>>> z_score
tensor([ 0.8717,  0.2200, -1.0917])
>>> torch.nn.functional.softmax(z_score)
tensor([0.6018, 0.3137, 0.0845])

结果很完美!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值