pytorch实现softmax函数(tensor类型数据)

最直观的数学解释,softmax函数将输入的几个数据,变成0-1且之和为1的数据再输出。

公式如下:

意思是,每个经过缩放的元素经过exp函数后的结果,再除以结果之和。

举例:对一个二维tensor的列作为处理对象,将每一列的数据都处理成和为1的数据。

a = torch.rand(2,3)
print(a)
tensor([[0.4374, 0.0013, 0.7946],
        [0.8905, 0.0954, 0.6671]])

这是创建了一个2x3的随机矩阵(0-1之间)

tmp = torch.max(a, dim=0, keepdim=True)[0]  
# 得到每列的最大值,用于缩放每列的元素,避免溢出.axis=0表示跨行,axis=1表示跨列
print(tmp)
print("tmp.shape:", tmp.shape)

tensor([[0.8905, 0.0954, 0.7946]])
tmp.shape: torch.Size([1, 3])

 这里,torch.max()函数有很多个,其中带有dim参数的这一个的返回值是一个tuple类型数据,tuple里面是2个tensor数据类型,第一个记录了每列最大值,第二个记录了每个最大值得索引,在这里我们只要最大值,所以只要返回值tuple里面的第一个;keepdim意思是保留计算完之后维度变为1的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值