python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > PyTorch F.softmax

PyTorch中F.softmax的具体使用

作者:资源存储库

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}}

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)

详细解释

示例代码解释

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?

Softmax 与 Logits

示例:多分类任务中的 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])

解释:

总结

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

您可能感兴趣的文章:
阅读全文