Pytorch学习-torch.max()和min()深度解析

max的使用 min同理

参考链接:
参考链接:

对于tensorA和tensorB:
1)torch.max(tensorA) 返回tensor中的最大值
2)torch.max(tensorA,dim)  返回指定维度的最大数和对应下标
3)torch.max(tensorA,tensorB) 比较tensorA和tensorB相对较大的元素

dim参数理解

搞清楚dim参数
第0维是行,第1维是列!!!
结论:
1)dim=0 查找每列的最大值,返回行下标索引
2)dim=1 查找每行的最大值,返回列下标索引
3)不添加dim参数,返回所有值中的最大值,且无索引

二维张量使用max()

t=torch.randn(2,3)
print(t)
print("-------max dim=0 -------")
print(torch.max(t,dim=0))
print("-------max dim=1 -------")
print(torch.max(t,dim=1))

结果:

tensor([[ 0.0231,  0.2109, -1.6104],
        [-0.5777, -1.3870, -0.9925]])
-------max dim=0 -------
torch.return_types.max(
values=tensor([ 0.0231,  0.2109, -0.9925]),
indices=tensor([0, 0, 1]))
-------max dim=1 -------
torch.return_types.max(
values=tensor([ 0.2109, -0.5777]),
indices=tensor([1, 0]))

**???疑问:**为什么0维是行,但是max时返回是列中的最大值呢?
理解:!!在其他维度均确定的情况下,比较所有dim维对应的数据,找到其中的最大值,并返回索引。
比如:
dim=0时 除了[0]维 还有[1]两个维度
第一列 遍历两行得到 [0][0] 和 [1][0] max为0.0231
第二列 遍历两行得到 [0][1] 和 [0][2] max为0.2109
第三列 遍历两行得到 [1][1] 和 [1][2] max为-0.9925

三维张量使用max()

第0维顺着层,第1维顺着行,第2维度顺着列

t = torch.randn(2,2,2)
print(t)
print("-------max dim=0 -------")
print(torch.max(t,dim=0))

print("-------max dim=1 -------")
print(torch.max(t,dim=1))

print("-------max dim=2 -------")
print(torch.max(t,dim=2))

结果:

tensor([[[-1.6519, -0.3087],
         [-0.6982,  0.4515]],

        [[-0.4648,  0.8958],
         [-1.4150, -1.4633]]])
-------max dim=0 -------  [[-0.4648,  0.8958],[-0.6982,  0.4515]] [[1,1],[0,0]] 列确定 比较行
torch.return_types.max(
values=tensor([[-0.4648,  0.8958],
        [-0.6982,  0.4515]]),
indices=tensor([[1, 1],
        [0, 0]]))
-------max dim=1 ------- [[-0.6982, 0.4515],[-0.4648,0.8958]] [[],[]][0][0][0][0][1][0]),([0][0][1][0][1][1]),([1][0][0][1][1][0]),([1][0][1][1][1][1])
torch.return_types.max(
values=tensor([[-0.6982,  0.4515],
        [-0.4648,  0.8958]]),
indices=tensor([[1, 1],
        [0, 0]]))
-------max dim=2 ------- [0][0]_,[0][1]_,[1][0]_,[1][1]_  ([0][0][0],[0][0][1]) ([0][1][0],[0][1][1]) ([1][0][0],[1][0][1]) ([1][1][0],[1][1][1])
torch.return_types.max(
values=tensor([[-0.3087,  0.4515],
        [ 0.8958, -1.4150]]),
indices=tensor([[1, 1],
        [1, 0]]))
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:1、两个框架的argmin等价; 2、torch.min包含了argmin和两个tensor对比这两个功能,分别对应numpy中的np.argmin和np.minimun; 3、torch.min包含了torch.argmin的功能。 引用\[2\]:torch.argmin 返回在指定维度方向上最小值的索引。 引用\[3\]:例2——不指定维度,返回整体上最大值的序号。 根据引用\[2\]和引用\[3\]的内容,torch.argmin函数用于返回在指定维度方向上最小值的索引。如果不指定维度,则返回整体上最小值的索引。例如,对于一个3x3的张量a,使用torch.argmin(a, dim=1)将返回每行最小值的索引,而使用torch.argmin(a)将返回整个张量中最小值的索引。 #### 引用[.reference_title] - *1* *2* [Numpy与Pytorch对比(一)最大/最小值寻找](https://blog.csdn.net/sinat_37145472/article/details/94753866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PyTorchtorch.maxmin、argmax、argmin](https://blog.csdn.net/Flag_ing/article/details/109128931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值