import torch
import torch.nn as nn
input_0 = torch.Tensor([1.4222e+01, 9.9372e+00, 2.5072e+00, -6.5985e+00, -1.0004e+01,
-8.9475e+00, -1.0700e+01, -2.7447e+00, -4.8649e+00, -6.4698e+00,
-4.4321e+00, -1.6125e+01, -1.2228e+01, -4.0457e+00, 6.3351e+00,
-2.3921e+00, -1.1495e+01, -1.0952e+01])
input_1 = torch.Tensor([[1,2,3,4],[5,6,7,8]])
softmax_0 = nn.Softmax(dim=0)
softmax_1 = nn.Softmax(dim=1 )
output_0 = softmax_0(input_0)
output_1 = softmax_1(input_1)
output_2 = softmax_0(input_1)
a = softmax_0(output_0)
print(output_0)
print(output_1)
print(output_2)
print(a)

softmax之后值不在0-1之间是为什么
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- MarkHan_ 2023-02-25 22:51关注
该回答引用GPTᴼᴾᴱᴺᴬᴵ
softmax函数是用于将输入转换为概率分布的函数。在输出结果中,每个元素都应该是介于0到1之间的值。但是,由于计算机内部浮点数的精度问题,在使用softmax函数时可能会遇到这样的情况,输出结果中某些元素的值略大于1或略小于0,但是这些值应该是非常接近于1或0的。如果出现输出结果中某些元素的值明显偏离了0到1之间,那么可能是由于softmax函数的输入值存在较大的范围差异,导致指数函数计算出现了数值上溢或下溢,从而影响了softmax函数的输出结果。在这种情况下,可以尝试对输入值进行归一化或缩放等预处理,以缓解数值精度问题。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用