torch.argmax函数学习

torch.argmax()函数

argmax函数torch.argmax(input, dim=None, keepdim=False)返回指定维度最大值的序号,dim给定的定义是:the demention to reduce.也就是把dim这个维度的,变成这个维度的最大值的index。
1)dim的不同值表示不同维度。特别的在dim=0表示二维中的列,dim=1在二维矩阵中表示行。广泛的来说,我们不管一个矩阵是几维的,比如一个矩阵维度如下:(d0,d1,...,dn−1) ,那么dim=0就表示对应到d0 也就是第一个维度,dim=1表示对应到
也就是第二个维度,一次类推。
2)知道dim的值是什么意思还不行,还要知道函数中这个dim给出来会发生什么。

结合这两个才会知道dim在函数中的作用。下面举两个例子说明上面的第二点。

例子一:torch.argmax()函数中dim表示该维度会消失。
这个消失是什么意思?官方英文解释是:dim (int) – the dimension to reduce.
我们知道argmax就是得到最大值的序号索引,对于一个维度为(d0,d1) 的矩阵来说,我们想要求每一行中最大数的在该行中的列号,最后我们得到的就是一个维度为(d0,1) 的一矩阵。这时候,列就要消失了。

因此,我们想要求每一行最大的列标号,我们就要指定dim=1,表示我们不要列了,保留行的size就可以了。
假如我们想求每一列的最大行标,就可以指定dim=0,表示我们不要行了。

 
  1. import torch

  2. a=torch.tensor(

  3. [

  4. [1, 5, 5, 2],

  5. [9, -6, 2, 8],

  6. [-3, 7, -9, 1]

  7. ])

  8. b=torch.argmax(a,dim=0)

  9. print(b)

  10. print(a.shape)

结果

 
  1. tensor([1, 2, 0, 1])

  2. torch.Size([3, 4])

dim=0维度上为3,即在那3组数据中作比较,求得是每一列中的最大行标,因此为[1,2,0,4]

 
  1. import torch

  2. a=torch.tensor([

  3. [

  4. [1, 5, 5, 2],

  5. [9, -6, 2, 8],

  6. [-3, 7, -9, 1]

  7. ],

  8. [

  9. [-1, 7, -5, 2],

  10. [9, 6, 2, 8],

  11. [3, 7, 9, 1]

  12. ]])

  13. b=torch.argmax(a,dim=0)

  14. print(b)

  15. print(a.shape)

  16. """

  17. tensor([[0, 1, 0, 1],

  18. [1, 1, 1, 1],

  19. [1, 1, 1, 1]])

  20. torch.Size([2, 3, 4])"""

  21. #dim=0,即将第一个维度消除,也就是将两个[3*4]矩阵只保留一个,因此要在两组中作比较,即将上下两个[3*4]的矩阵分别在对应的位置上比较

  22. b=torch.argmax(a,dim=1)

  23. “”“

  24. tensor([[1, 2, 0, 1],

  25. [1, 2, 2, 1]])

  26. torch.Size([2, 3, 4])”“”

  27. #dim=1,即将第二个维度消除,这么理解:矩阵维度变为[2*4];

  28. """[1, 5, 5, 2],

  29. [9, -6, 2, 8],

  30. [-3, 7, -9, 1];

  31. 纵向压缩成一维,因此变为[1,2,0,1];同理得到[1,2,2,1];"""

  32. b=torch.argmax(a,dim=2)

  33. """

  34. tensor([[2, 0, 1],

  35. [1, 0, 2]])

  36. """

  37. #dim=2,即将第三个维度消除,这么理解:矩阵维度变为[2*3]

  38. """

  39. [1, 5, 5, 2],

  40. [9, -6, 2, 8],

  41. [-3, 7, -9, 1];

  42. 横向压缩成一维

  43. [2,0,1],同理得到下面的“”“

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值