【问题标题】:torch.addmm received an invalid combination of argumentstorch.addmm 收到无效的参数组合
【发布时间】:2017-11-24 08:35:25
【问题描述】:

在pytorch的官网上看到下面的代码和答案:

>> a = torch.randn(4, 4)
>> a

0.0692  0.3142  1.2513 -0.5428
0.9288  0.8552 -0.2073  0.6409
1.0695 -0.0101 -2.4507 -1.2230
0.7426 -0.7666  0.4862 -0.6628
torch.FloatTensor of size 4x4]

>>> torch.max(a, 1)
(
 1.2513
 0.9288
 1.0695
 0.7426
[torch.FloatTensor of size 4]
,
 2
 0
 0
 0
[torch.LongTensor of size 4]
)

我知道第一个结果对应于每行的最大数量,但是我没有得到第二个张量(LongTensor)

我尝试了其他随机示例,在 pytorch.max 之后,我找到了这些结果

0.9477  1.0090  0.8348 -1.3513
-0.4861  1.2581  0.3972  1.5751
-1.2277 -0.6201 -1.0553  0.6069
 0.1688  0.1373  0.6544 -0.7784
[torch.FloatTensor of size 4x4]

(
 1.0090
 1.5751
 0.6069
 0.6544
[torch.FloatTensor of size 4]
, 
 1
 3
 3
 2
[torch.LongTensor of size 4]
)

谁能告诉我这些 LongTensor 数据的真正含义是什么?我认为这是张量之间的奇怪转换,但是在对浮点张量进行简单转换后,我发现它只是减少了小数

谢谢

【问题讨论】:

    标签: python pytorch tensor


    【解决方案1】:

    它只是告诉您原始张量中沿查询维度的最大元素的索引

    例如

    0.9477  1.0090  0.8348 -1.3513
    -0.4861  1.2581  0.3972  1.5751
    -1.2277 -0.6201 -1.0553  0.6069
     0.1688  0.1373  0.6544 -0.7784
    [torch.FloatTensor of size 4x4]
    
    # torch.max(a, 1)
    (
     1.0090
     1.5751
     0.6069
     0.6544
    [torch.FloatTensor of size 4]
    , 
     1
     3
     3
     2
    [torch.LongTensor of size 4]
    )
    

    在上面torch.LongTensor的例子中,

    11.0090 在原始张量 (torch.FloatTensor) 中的索引
    31.5751 在原始张量 (torch.FloatTensor) 中的索引
    30.6069 在原始张量 (torch.FloatTensor) 中的索引
    20.6544 在原始张量 (torch.FloatTensor) 中的索引

    沿维度 1


    相反,如果您请求 torch.max(a, 0)torch.LongTensor 中的条目将对应于原始张量中最大元素的 indices沿维度 0

    【讨论】:

    • 谢谢@kmario23 我还没有意识到!
    猜你喜欢
    • 1970-01-01
    • 2019-07-26
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2019-08-04
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多