【Pytorch】Softmax激活函数

Softmax 激活函数

  • 功能:不同的输入经过 softmax 激活函数后,所有的输出都在 (0, 1) 之间,其中较大的输入与其他的输入经过 softmax 函数后,他们之间的悬殊就更大了
  • Softmax将多个神经元的输出,映射到(0,1)区间内,并且做了归一化,所有元素的和累加起来等于1。可以直接当作概率对待,选取概率最大的分类作为预测的目标。
  • Softmax中使用了指数,这样可以让大的值更大,让小的更小,增加了区分对比度,学习效率更高

在这里插入图片描述

输入的 yi 中有一个 2.0 的输入,有一个 1.0 的输入,它们经过 softmax 函数后差距变得更大了

Softmax 函数的偏导过程

图解求偏导过程

在这里插入图片描述

偏导数

在这里插入图片描述

代码模拟偏导过程

import torch

a = torch.rand(3, requires_grad=True)
print(a)    # tensor([0.6645, 0.3585, 0.7826], requires_grad=True)

p = torch.nn.functional.softmax(a, dim=0)
print(p)    # tensor([0.3494, 0.2573, 0.3932], grad_fn=<SoftmaxBackward>)

ret = torch.autograd.grad(p[1], [a], retain_graph=True)
print(ret)  # (tensor([-0.0899,  0.1911, -0.1012]),)    i = 1 -> 第1个是正的
ret = torch.autograd.grad(p[2], [a])
print(ret)  # (tensor([-0.1374, -0.1012,  0.2386]),)    i = 2 -> 第2个是正的
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
PyTorch中的Softmax激活函数是一个常用的非线性激活函数,它将输入的每个元素归一化到一个概率分布上。Softmax函数的输出是一个数值范围在[0,1]之间的向量,向量中的所有元素的和为1。 在PyTorch中,可以使用torch.nn.functional.softmax函数来实现Softmax激活函数。这个函数接受一个输入张量作为参数,并返回对应的Softmax激活后的张量。 例如,假设我们有一个输入张量x,形状为[batch_size, num_classes],其中batch_size是输入样本的数量,num_classes是类别的数量。我们可以使用如下代码来应用Softmax激活函数: ``` python import torch import torch.nn.functional as F x = torch.randn(batch_size, num_classes) softmax_output = F.softmax(x, dim=1) ``` 在上面的代码中,输入张量x经过softmax函数后,输出的softmax_output将是一个与x具有相同形状的张量。而且,softmax_output中的每个元素都是归一化的,表示对应类别的概率。 需要注意的是,softmax函数可以沿着一个维度进行运算。在上面的例子中,我们通过设置dim=1来指定在第1个维度(即类别维度)进行Softmax操作。 Softmax激活函数深度学习中非常常用,特别在多类别分类问题中。它可以将模型的输出转化为概率分布,方便进行后续的概率计算和决策。同时,Softmax激活函数具有一阶可导的性质,可以支持反向传播算法进行模型参数的学习和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值