python-3.x 你如何得到 Torch ,模式的输出指标,可以详细说明

yftpprvb  于 2022-12-01  发布在  Python
关注(0)|答案(1)|浏览(124)
>>> b
tensor([[ 6,  7, 12,  7,  8],
        [ 0,  1,  6,  1,  2],
        [ 0,  1,  6,  1,  2],
        [ 2,  3,  8,  3,  4],
        [ 2,  3,  8,  3,  4],
        [ 2,  3,  8,  3,  4],
        [10, 11, 16, 11, 12],
        [-1,  0,  5,  0,  1],
        [-2, -1,  4, -1,  0],
        [ 2,  3,  8,  3,  4],
        [ 1,  2,  7,  2,  3],
        [ 1,  2,  7,  2,  3],
        [ 2,  3,  8,  3,  4],
        [ 5,  6, 11,  6,  7],
        [-2, -1,  4, -1,  0],
        [-3, -2,  3, -2, -1],
        [-5, -4,  1, -4, -3],
        [ 1,  2,  7,  2,  3],
        [12, 13, 18, 13, 14],
        [-3, -2,  3, -2, -1],
        [ 2,  3,  8,  3,  4],
        [ 3,  4,  9,  4,  5],
        [10, 11, 16, 11, 12],
        [-6, -5,  0, -5, -4],
        [ 9, 10, 15, 10, 11],
        [12, 13, 18, 13, 14],
        [-3, -2,  3, -2, -1],
        [-2, -1,  4, -1,  0],
        [-4, -3,  2, -3, -2],
        [-1,  0,  5,  0,  1],
        [ 2,  3,  8,  3,  4],
        [ 4,  5, 10,  5,  6],
        [-1,  0,  5,  0,  1],
        [ 5,  6, 11,  6,  7],
        [ 7,  8, 13,  8,  9],
        [ 3,  4,  9,  4,  5],
        [ 2,  3,  8,  3,  4],
        [ 4,  5, 10,  5,  6],
        [-4, -3,  2, -3, -2],
        [ 2,  3,  8,  3,  4],
        [-1,  0,  5,  0,  1],
        [ 2,  3,  8,  3,  4],
        [ 4,  5, 10,  5,  6],
        [ 9, 10, 15, 10, 11],
        [-1,  0,  5,  0,  1],
        [-4, -3,  2, -3, -2],
        [ 0,  1,  6,  1,  2],
        [ 4,  5, 10,  5,  6],
        [ 6,  7, 12,  7,  8],
        [-2, -1,  4, -1,  0]])
>>> torch.mode(b, 0)
torch.return_types.mode(
values=tensor([2, 3, 8, 3, 4]),
indices=tensor([20, 20, 20, 20, 20]))

我不知道为什么指数都等于20
详细的 Torch .模式描述如下https://pytorch.org/docs/stable/generated/torch.mode.html#torch.mode
torch.mode(input,dim=- 1,keepdim=False,*,out=None)返回一个命名元组(values,indices),其中values是给定维度dim中输入Tensor的每一行的模式值,即在该行中最常出现的值,indices是找到的每个模式值的索引位置。
默认情况下,dim是输入Tensor的最后一个维度。
如果keepdim为True,则输出Tensor的大小与输入Tensor的大小相同,但维度dim中的Tensor大小为1。否则,dim会被压缩(请参阅torch.squeeze()),导致输出Tensor的维度比输入Tensor少1。

wbrvyc0a

wbrvyc0a1#

这是因为Tensorb的方式。行[2, 3, 8, 3, 4]重复很多,因此在每列中,模式分别为[2, 3, 8, 3, 4],并且更重要的是,模式索引将精确地相等,因为模式一起出现;如果查看索引为20的行(即,第21行),则它正好是[2, 3, 8, 3, 4]
我假设您构建了与torch.mode中的示例类似的b,我认为这是一个糟糕的示例选择,因为它会导致像您所遇到的那样的混乱。
相反,请考虑以下事项:

>>> b = torch.randint(4, (5, 7))
>>> b
tensor([[0, 0, 0, 2, 0, 0, 2],
        [0, 3, 0, 0, 2, 0, 1],
        [2, 2, 2, 0, 0, 0, 3],
        [2, 2, 3, 0, 1, 1, 0],
        [1, 1, 0, 0, 2, 0, 2]])
>>> torch.mode(b, 0)
torch.return_types.mode(
values=tensor([0, 2, 0, 0, 0, 0, 2]),
indices=tensor([1, 3, 4, 4, 2, 4, 4]))

在上面的例子中,b在每一列都有不同的模式,分别是[0, 2, 0, 0, 0, 0, 2]torch.mode返回的索引是[1, 3, 4, 4, 2, 4, 4],这是有意义的,因为例如,在第一列中,0是最常见的元素,索引1处有一个0。类似地,在第二列中,2是最常见的元素,在索引3处有一个2。这对所有列都是成立的。如果你想要行的模式,你可以执行torch.mode(b, 1)

相关问题