Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解

相关文章

Pytorch学习笔记(一):torch.cat()模块的详解
Pytorch学习笔记(二):nn.Conv2d()函数详解
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
Pytorch学习笔记(四):nn.MaxPool2d()函数详解
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
Pytorch学习笔记(六):view()和nn.Linear()函数详解
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解

1.函数语法格式和作用

F.softmax作用:
按照行或者列来做归一化的
F.softmax函数语言格式:

# 0是对列做归一化,1是对行做归一化
F.softmax(x,dim=1) 或者 F.softmax(x,dim=0)

F.log_softmax作用:
在softmax的结果上再做多一次log运算
F.log_softmax函数语言格式:

F.log_softmax(x,dim=1) 或者 F.log_softmax(x,dim=0)

2.参数解释

  • x指的是输入矩阵。

  • dim指的是归一化的方式,如果为0是对列做归一化,1是对行做归一化。

3.具体代码

import torch
import torch.nn.functional as F
logits = torch.rand(2,2)
pred = F.softmax(logits, dim=1)
pred1 = F.log_softmax(logits, dim=1)
print(logits)
print(pred)
print(pred1)

结果
在这里插入图片描述

  • 55
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: torch.nn.functional.log_softmaxPyTorch中的一个函数,用于计算softmax函数的对数值。softmax函数是一种常用的激活函数,用于将输入值转换为概率分布。log_softmax函数则是对softmax函数的结果取对数,可以避免数值溢出的问题,并且在计算交叉熵损失时更加方便。 ### 回答2: torch.nn.functional.log_softmaxPyTorch中的一个函数,用于计算数据在经过softmax之后进行log的结果。在深度学习中,softmax是非常常见的一种激活函数,使用softmax可以将数据的输出转换为概率分布,可以用于解决分类问题。而log_softmax就是在softmax的基础上再进行一次log变换,这样做的好处在于可以在计算损失函数时,避免溢出的问题。 函数定义: torch.nn.functional.log_softmax(input, dim=None, _stacklevel=3, dtype=None) 参数介绍: input: 输入的数据tensor dim: 沿着哪个维度进行softmax操作,默认为-1,即最后一个维度 dtype: 输出的数据类型,默认为None,即自动判断 函数返回值: log_softmax操作后的输出tensor 使用示例: 假设有一个大小为(B, C, H, W)的tensor。 如果要对tensor在最后一个维度上进行softmax操作: output = nn.functional.log_softmax(tensor, dim=-1) 如果要对tensor在第二个维度上进行softmax操作: output = nn.functional.log_softmax(tensor, dim=1) 需要注意的是:在PyTorch中,nn.functional.log_softmax并没有可训练的参数,因此只是一个操作函数,而不是层。 ### 回答3: 在PyTorch中,torch.nn.functional.log_softmax()函数被用来实现对数softmax函数softmax函数是一种常用的激活函数,它可以把一个向量变成每个元素都在0到1之间且和为1的概率分布。在分类问题中,我们经常把输出的向量通过softmax转化成一个概率分布,然后找到概率最大的类别作为预测结果。 而对数softmax函数就是对softmax函数取对数,可以减小计算上溢和下溢的风险,因为对数函数可以处理非常小和非常大的数,同时还可以保持概率的相对大小不变。因此,log_softmax函数通常被用在神经网络的输出层作为损失函数log_softmax函数的数学公式为: log_softmax(x_i) = log(exp(x_i) / sum_j(exp(x_j))) 其中,x是输入的向量,i是向量的某一个元素,j是向量的所有元素。 当我们在计算log_softmax时,需要先对输入向量x进行指数运算(exp(x)),然后将结果除以所有元素的指数和(sum_j(exp(x_j))),最后取对数。这个计算过程可以通过调用函数torch.nn.functional.log_softmax()来完成。具体说来,函数的作用是对输入进行logsoftmax计算并且返回结果。 函数的参数有两个,第一个是输入的向量x,第二个是在哪一个维度上进行logsoftmax计算。因为log_softmax函数是在维度上进行计算,因此需要指定哪个维度。一般情况下,我们选择最后一个维度,即dim=-1,这意味着对最后一个维度进行log_softmax计算。 总之,torch.nn.functional.log_softmax()是一种常用的神经网络函数,用于实现对数softmax函数。它可以减小计算上溢和下溢的风险,同时还可以保持概率的相对大小不变。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZY_dl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值