PyTorch中F.softmax的具体使用

 更新时间:2025年05月13日 10:16:38   作者:资源存储库  
F.softmax是PyTorch中用于计算Softmax函数的函数,本文主要介绍了PyTorch中F.softmax的具体使用,具有一定的参考价值,感兴趣的可以了解一下

F.softmax 是 PyTorch 中用于计算 Softmax 函数 的函数,通常用于 多分类任务 的输出层,用来将模型的原始输出(称为 logits)转化为概率分布。

Softmax 函数将每个类别的得分(logits)转换为一个介于 0 和 1 之间的概率值,并且所有类别的概率之和等于 1。

Softmax 函数的定义

给定一个包含n 个元素的向量\mathbf{z} = [z_1, z_2, ..., z_n] ,Softmax 函数的输出是一个概率分布\mathbf{p} = [p_1, p_2, ..., p_n] ,其中每个p_i 表示第i个类别的概率。Softmax 的公式如下:

​​p_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}}

  • z_i:第i个类别的原始得分(logit)。
  • e^{z_i}:对得分进行指数运算。
  • \sum_{j=1}^{n} e^{z_j}:所有类别得分指数的总和,用于对概率进行归一化,使得所有的概率和为 1。

F.softmax 的作用

F.softmax 函数将给定的 logits(即模型的原始输出)转换为概率分布。

假设我们有一个包含 10 个类别的模型输出,那么 F.softmax 会将这 10 个 logits 转化为 10 个概率,每个概率值在 0 到 1 之间,并且所有 10 个概率的和为 1。

用法

在 PyTorch 中,F.softmax 由 torch.nn.functional 模块提供,使用方式如下:

import torch
import torch.nn.functional as F

# 假设我们有一个大小为 [batch_size, num_classes] 的张量
logits = torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]])

# 计算 softmax,dim=1 表示对每一行进行 softmax 计算
probabilities = F.softmax(logits, dim=1)

print(probabilities)

详细解释

  • logits:是一个 2D 张量,每一行表示一个样本的原始输出值(logits),每一列表示该样本在某个类别的得分。

  • dim=1:指定了计算 Softmax 的维度。dim=1 表示对每一行计算 Softmax,即每个样本的得分都会被转化为一个概率分布。注意,如果是处理多维数据,可以通过调整 dim 来指定 Softmax 计算的维度。

    • 如果 dim=0,则对每列计算 Softmax,通常在处理多批次数据时不常用。
  • output:Softmax 转换后的输出是一个概率分布,所有元素都在 0 到 1 之间,并且每行的元素和为 1。

示例代码解释

import torch
import torch.nn.functional as F

# 假设输入是一个大小为 (2, 3) 的张量,其中 2 是 batch_size,3 是类别数
logits = torch.tensor([[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]])

# 计算 Softmax,按照列来计算,即对每行进行 Softmax
probabilities = F.softmax(logits, dim=1)

print(probabilities)

输入:

tensor([[1.0, 2.0, 3.0], 
        [1.0, 2.0, 3.0]])

输出:

tensor([[0.09003057, 0.24472847, 0.66524096],
        [0.09003057, 0.24472847, 0.66524096]])

解释:

  • 对于每一行的得分,Softmax 会将其转换为概率。
    • 第一行 [1.0, 2.0, 3.0] 经过 Softmax 处理后得到 [0.0900, 0.2447, 0.6652],这些概率值的总和为 1。
    • 第二行 [1.0, 2.0, 3.0] 同样经过 Softmax 转换后,得到相同的概率分布 [0.0900, 0.2447, 0.6652],这也保证了概率总和为 1。

为什么使用 Softmax?

  • 多分类任务:在多分类问题中,模型的输出通常是每个类别的原始得分。Softmax 函数能够将这些得分转化为概率分布,使得每个类别的预测概率能够加起来为 1,并且通过最大概率来做预测。

  • 分类概率:Softmax 给出的每个类别的概率可以帮助我们了解模型对每个类别的信心程度。对于实际应用,通常选择概率最大的类别作为模型的预测结果。

Softmax 与 Logits

  • Logits 是未经处理的原始输出值,通常来自神经网络的输出层。
  • Softmax 是对 logits 的一种规范化,它将 logits 转换为 0 到 1 之间的概率值。

示例:多分类任务中的 Softmax

假设我们有一个多分类任务,模型的输出是一个包含 4 个类别的 logits 向量,[2.0, 1.0, 0.1, 0.5]

我们希望将其转换为类别的概率分布。

import torch
import torch.nn.functional as F

logits = torch.tensor([2.0, 1.0, 0.1, 0.5])

# 使用 F.softmax 将 logits 转换为概率分布
probabilities = F.softmax(logits, dim=0)

print(probabilities)

输出:

tensor([0.5438, 0.1993, 0.0717, 0.1852])

解释:

  • 原始 logits 为 [2.0, 1.0, 0.1, 0.5],经过 Softmax 处理后,得到了每个类别的概率 [0.5438, 0.1993, 0.0717, 0.1852]。概率最大的类别是第一个类别,其概率为 0.5438。

总结

  • Softmax 函数将 logits 转换为概率分布,适用于多分类任务。
  • 它保证了输出的每个类别概率值在 0 到 1 之间,并且所有概率的和为 1。
  • 在 PyTorch 中,F.softmax 是计算 Softmax 的常用函数,通常与 CrossEntropyLoss 搭配使用。

到此这篇关于PyTorch中F.softmax的具体使用的文章就介绍到这了,更多相关PyTorch F.softmax内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 基于Python实现智能聊天机器人的完整代码

    基于Python实现智能聊天机器人的完整代码

    本文基于Python语言搭建一款轻量级本地智能聊天机器人,无需依赖第三方付费接口,依靠基础自然语言匹配逻辑实现人机对话功能,案例代码简洁易懂、可直接运行,需要的朋友可以参考下
    2026-05-05
  • 详解如何使用Pandas处理时间序列数据

    详解如何使用Pandas处理时间序列数据

    时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景,本文给大家详细介绍了如何使用Pandas处理时间序列数据,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-01-01
  • flask之邮件发送的实现示例

    flask之邮件发送的实现示例

    Flask-Mail是一个处理电子邮件发送的扩展,它提供了简单且易于使用的API,可以方便地发送电子邮件,本文就来介绍一下flask之邮件发送的实现示例,感兴趣的可以了解一下
    2023-12-12
  • 如何利用python写GUI及生成.exe可执行文件

    如何利用python写GUI及生成.exe可执行文件

    工作中需要开发一个小工具,简单的UI界面可以很好的提高工具的实用性,由此开启了我的第一次GUI开发之旅,这篇文章主要给大家介绍了关于如何利用python写GUI及生成.exe可执行文件的相关资料,需要的朋友可以参考下
    2021-12-12
  • Python+微信接口实现运维报警

    Python+微信接口实现运维报警

    这篇文章主要介绍了Python+微信接口实现运维报警的相关资料,需要的朋友可以参考下
    2016-08-08
  • Pandas DataFrame replace替换后无效的解决

    Pandas DataFrame replace替换后无效的解决

    这篇文章主要介绍了Pandas DataFrame replace替换后无效的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python读取MRI并显示为灰度图像实例代码

    Python读取MRI并显示为灰度图像实例代码

    这篇文章主要介绍了Python读取MRI并显示为灰度图像实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • mac安装python3后使用pip和pip3的区别说明

    mac安装python3后使用pip和pip3的区别说明

    这篇文章主要介绍了mac安装python3后使用pip和pip3的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 浅析PyTorch中nn.Module的使用

    浅析PyTorch中nn.Module的使用

    这篇文章主要介绍了浅析PyTorch中nn.Module的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python打印酷炫日志的方法详解

    Python打印酷炫日志的方法详解

    在Python中,日志是一种非常重要的工具,可以帮助我们更好地了解程序的运行情况,本文将介绍如何使用logging模块来打印炫酷的日志,需要的可以参考一下
    2023-06-06

最新评论