栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pytorch小记-torch.nn.Softmax(dim=1)如何理解?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pytorch小记-torch.nn.Softmax(dim=1)如何理解?

在进行多分类时,时常看到Softmax分类函数,理论基础可看文章PyTorch深度学习实践概论笔记9-SoftMax分类器。应用时经常看到代码torch.nn.Softmax(dim=1),如何理解呢?

1.文档

pytorch不会,查看官方文档:Softmax — PyTorch 1.10 documentation。

torch.nn.Softmax 是 Module 类,在实例化类后会初始化运算所需要的参数。这些参数会在 forward 和 backward 之后根据 loss 进行更新,通常存放在定义模型的 __init__() 中。在 Module 类里的 __call__ 实现了 forward() 函数的调用。

定义

将Softmax函数应用于一个n维输入张量,对其进行缩放,使n维输出张量的元素位于[0,1]范围内,总和为1。

公式

参数

dim (int) - Softmax将被计算的维度(因此沿dim的每个切片和为1)。

请注意

此模块不直接与NLLLoss一起工作,它期望在Softmax和它自己之间计算Log。

可以使用LogSoftmax代替(它更快并且有更好的数值属性)。

2.例子

看个栗子:

import torch
a = torch.randn(2,3,4)
print(a)

a是维度为(2,3,4)的tensor,输出为:

tensor([[[-0.5947,  0.9496, -1.9366,  0.0580],
         [ 0.8346,  2.2958,  1.4638, -0.0390],
         [ 0.1379,  1.2085,  1.2671, -1.2156]],

        [[-0.1980, -0.8921, -1.1665, -1.2323],
         [-0.8220, -1.9701,  1.7183, -0.2698],
         [ 0.1977, -0.1474, -1.5431, -2.2217]]])
当dim=0时,指的是在维度0上的元素相加等于1。
torch.nn.Softmax(dim=0)(a)

当dim=1时,指的是在维度1上的元素相加等于1。
torch.nn.Softmax(dim=1)(a)

当dim=2时,指的是在维度2上的元素相加等于1。
torch.nn.Softmax(dim=2)(a)

说明:记录学习笔记,如果错误欢迎指正!写文章不易,转载请联系我。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767475.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号