相关文章
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.log_softmax
是两个极为重要的函数,它们在数据处理和模型训练过程中发挥着关键的作用。
1.1 F.softmax 作用🌿
F.softmax
函数主要用于将输入的数值转换为概率分布。它的核心操作是按照行或者列来进行归一化处理。在实际应用场景中,比如在多分类问题的神经网络输出层,模型会产生一系列的数值作为各个类别的得分。而F.softmax
函数能够将这些得分转换为每个类别对应的概率值,使得所有类别的概率之和为 1。这样的处理方式使得模型的输出具有明确的概率意义,便于后续的决策和分析。例如,在图像分类任务中,模型可能会输出一个表示每个类别可能性的向量,通过F.softmax
函数的处理,我们可以清晰地知道图像属于每个类别的概率大小,从而确定最有可能的分类结果。
1.2 F.softmax 函数语言格式🌿
# 0 是对列做归一化,1 是对行做归一化
F.softmax(x,dim=1) 或者 F.softmax(x,dim=0)
这里的x
代表输入的张量,通常是模型的输出结果。dim
参数用于指定归一化的维度。当dim = 1
时,表示沿着行的方向进行归一化,即将每一行的数值转换为该行的概率分布。这种方式适用于处理每个样本有多个类别的情况,例如在一个批次的图像分类任务中,每个图像都有多个可能的类别,此时沿着行进行归一化可以得到每个图像属于各个类别的概率。而当dim = 0
时,则是沿着列的方向进行归一化,常用于一些特定的矩阵运算或数据处理场景中,例如在对某些特征矩阵进行处理时,可能需要按照列来计算概率分布。
1.3 F.log_softmax 作用🌿
F.log_softmax
函数在softmax
的基础上进一步进行了运算。它在softmax
的结果上再做多一次log
运算。这一操作在深度学习中也具有重要的意义。在一些基于概率的损失函数计算中,例如交叉熵损失函数,使用F.log_softmax
可以简化计算过程并提高数值稳定性。通过对softmax
结果取对数,能够将乘法运算转换为加法运算,在计算梯度等过程中可以减少数值计算的复杂度和潜在的数值溢出问题。同时,在一些需要对概率分布进行进一步数学处理的场景中,F.log_softmax
也提供了更方便的数值表示形式。
F.log_softmax 函数语言格式
F.log_softmax(x,dim=1) 或者 F.log_softmax(x,dim=0)
与F.softmax
函数类似,x
为输入张量,dim
参数同样用于指定操作的维度。无论是dim = 1
对行进行操作还是dim = 0
对列进行操作,其基本原理都是先进行softmax
归一化,然后再对归一化后的结果取对数。这种一致的函数格式设计使得开发者在使用过程中能够方便地根据具体的需求和数据结构选择合适的维度进行计算,同时也便于在代码中进行统一的管理和维护。
总之,F.softmax
和F.log_softmax
函数在深度学习的模型训练和推理过程中是不可或缺的工具,深入理解它们的作用和语法格式对于构建高效、准确的神经网络模型至关重要。
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)
结果
✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️▶️➡️🌿🍀🍄🌟⭐❄️✅💖⚠️