python中的torch.nn.Softmax() 用法和例子 dim=1 dim=2

这篇具有很好参考价值的文章主要介绍了python中的torch.nn.Softmax() 用法和例子 dim=1 dim=2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用法

torch.nn.Softmax() 是 PyTorch 中的一个类,用于实现 softmax 函数。softmax 函数是一种常用的激活函数,它可以将一个向量转换成一个概率分布,使得每个元素都是非负数且和为 1。softmax 函数通常在分类问题中使用,可以将一个多分类问题转换成多个二分类问题,从而得到每个类别的概率分布。

语法格式

torch.nn.Softmax(dim=None)

其中,dim 是要进行 softmax 的维度,缺省值为 None,表示对最后一维进行 softmax。

例子dim=1

import torch

x = torch.randn(2, 3)
print('x:', x)

softmax = torch.nn.Softmax(dim=1)
y = softmax(x)
print('y:', y)

输出

x: tensor([[ 1.3551,  0.3739,  0.5962],
            [-0.3465,  1.4536,  0.4576]])
y: tensor([[0.4989, 0.2238, 0.2773],
            [0.1018, 0.7325, 0.1656]])

在这个例子中,我们先使用 torch.randn() 生成一个大小为 (2, 3) 的张量 x。然后,我们定义一个 torch.nn.Softmax() 对象 softmax,将维度 dim=1 作为参数传入。接着,我们将张量 x 作为输入,调用 softmax() 方法,得到一个大小为 (2, 3) 的张量 y,表示经过 softmax 函数处理后的结果。可以看到,每行元素都是非负数且和为 1。

需要注意的是,torch.nn.Softmax() 在实际使用中通常与交叉熵损失函数一起使用,用于多分类问题的训练。

例子dim=2

dim=2 表示在第二个维度上进行 softmax 计算。

import torch

# 创建一个3D张量,形状为(2, 3, 4)
x = torch.randn(2, 3, 4)

# 使用dim=2进行softmax计算
softmax = torch.nn.Softmax(dim=2)
y = softmax(x)

print("Original tensor:")
print(x)
print("\nSoftmax tensor:")
print(y)

输出

Original tensor:
tensor([[[ 0.4769, -0.1835, -0.3167, -1.1385],
         [-0.5912,  0.4781, -0.6784, -0.4377],
         [-0.9624, -0.0528, -1.4899, -1.5107]],

        [[ 0.1033, -0.0107, -0.4888, -1.5489],
         [ 0.4071,  0.2163, -0.3167, -0.1252],
         [-1.7984, -1.1394, -1.5384, -0.3176]]])

Softmax tensor:
tensor([[[0.4669, 0.1745, 0.1527, 0.2060],
         [0.1668, 0.4647, 0.1311, 0.2374],
         [0.3005, 0.5028, 0.1452, 0.0515]],

        [[0.4474, 0.2594, 0.1248, 0.1684],
         [0.3616, 0.2983, 0.1426, 0.1975],
         [0.1055, 0.1555, 0.1084, 0.6307]]])

可以看到,原始张量中的每个值都经过了 softmax 计算,第二个维度上的值都被归一化到了 0 到 1 之间,并且在每个样本上的值之和都为 1。

总结

当张量的形状为二维时,dim=1 和 dim=2 的效果类似,因为此时张量的行数等于时间步数,列数等于特征数。在这种情况下,dim=1 和 dim=2 都将每一行的值进行归一化,输出的结果相同。

但是当张量的形状为三维及以上时,dim=1 和 dim=2 的效果就不同了。在序列到序列的任务中,通常需要对每个时间步上的输出进行归一化,因此需要使用 torch.nn.Softmax(dim=2)。在分类任务中,通常需要对每个样本的输出进行归一化,因此需要使用 torch.nn.Softmax(dim=1)。

总之,dim 参数的选择应该根据具体的任务需求来进行选择,而不是根据形状的维数来确定。文章来源地址https://www.toymoban.com/news/detail-569836.html

到了这里,关于python中的torch.nn.Softmax() 用法和例子 dim=1 dim=2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch计算余弦相似度距离——torch.nn.CosineSimilarity函数中的dim参数使用方法

    前言 一、官方函数用法 二、实验验证 1.计算高维数组中各个像素位置的余弦距离 2.验证高维数组中任意一个像素位置的余弦距离 总结 现在要使用Pytorch中自带的 torch.nn. CosineSimilarity函数计算两个高维特征图(B,C,H,W)中各个像素位置的特征相似度,即特征图中的每个像素位置上

    2024年02月13日
    浏览(28)
  • torch.sigmoid()、torch.softmax()、sum

    torch.sigmoid()、torch.softmax()、sum 1、torch.sigmoid() 对每个元素进行处理(函数为 ) 举例: 2、torch.softmax() 公式: 二维情况下,dim=1时,对行进行计算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GIDLbimg-1666254112726)(https://cdn.jsdelivr.net/gh/bean661/images@ma

    2024年02月16日
    浏览(25)
  • [log_softmax]——深度学习中的一种激活函数

    [log_softmax]——深度学习中的一种激活函数 随着人工智能技术的发展,深度学习已经成为了众多领域的热点研究方向。在深度学习中,激活函数是非常重要的组成部分之一,而[log_softmax]就是其中的一种。本文将介绍什么是[log_softmax],以及它在深度学习中的应用。 首先,我们

    2024年02月13日
    浏览(38)
  • 卷积神经网络中的卷积层、池化层、全连接层、softmax

    卷积层的作用是提取输入图片中的信息,这些信息被称为图像特征,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征,颜色特征。 卷积操作类似于数学中的卷积,但是更加简单,计算机和我们看到的图像不一样,计算机看到的图像其实就

    2024年02月09日
    浏览(33)
  • torch.nn.BCEWithLogitsLoss用法介绍

    self.bce = nn.BCEWithLogitsLoss(reduction=\\\'none\\\') , None的使用方法可以见官网pytorch代码文档 代码举例 举例的代码中target中的计算方法是这样的( resuction=\\\'none\\\' ) 对于target[0][0][0]=1=y n , a[0][0][0]=0.2070=x n , 因此,对于l n 0.5950 = − ( 1 × ln ⁡ σ ( 0.2070 ) + 0 × ln ⁡ ( 1 − σ ( 0.2070 ) ) ) 0.5950 = -l

    2024年01月18日
    浏览(31)
  • Pytorch:torch.nn.Module.apply用法详解

    torch.nn.Module.apply 是 PyTorch 中用于递归地应用函数到模型的所有子模块的方法。它允许对模型中的每个子模块进行操作,比如初始化权重、改变参数类型等。 以下是关于 torch.nn.Module.apply 的示例: 1. 语法 Module:PyTorch 中的神经网络模块,例如 torch.nn.Module 的子类。 fn:要应用到

    2024年01月15日
    浏览(37)
  • 从零开始的Hadoop学习(六)| HDFS读写流程、NN和2NN工作机制、DataNode工作机制

    1.1 HDFS写数据流程 1.1.1 剖析文件写入 (1)客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 (2)NameNode 返回是否可以上传。 (3)客户端请求第一个 Block 上传到哪几个 DataNode 服务上。 (4)NameNode 返回 3个 DataN

    2024年02月10日
    浏览(39)
  • log_softmax比softmax更好?

    探讨一下在多类别分类场景,如翻译、生成、目标检测等场景下,使用log_softmax的效果优于softmax的原因。 假设词典大小为10,一个词的ID为9(即词典的最后一个词),使用交叉熵作为损失函数,我们给出两组向量: 已知交叉熵损失函数定义如下: l o s s = ∑ i = 0 k y i l o g (

    2024年02月13日
    浏览(24)
  • PyTorch中的torch.nn.Parameter() 详解

    今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实现原理细节也是云里雾里,在参考了几篇博文,做过几个实验之后算是清晰了,本文在记录的同时希望给后来人一个参考,欢迎留言讨论。 先看其名,parameter,中文

    2023年04月08日
    浏览(78)
  • PyTorch中的torch.nn.Linear函数解析

    torch.nn是包含了构筑神经网络结构基本元素的包,在这个包中,可以找到任意的神经网络层。这些神经网络层都是nn.Module这个大类的子类。torch.nn.Linear就是神经网络中的线性层,可以实现形如y=Xweight^T+b的加和功能。 nn.Linear():用于设置网络中的全连接层,需要注意的是全连接

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包