姬宜欣 发表于 2025-6-16 13:15:29

MindSpore中的ReduceMax和max操作的区别

问题背景

在原生的Python中,我们使用求最大值max操作,只会得到计算之后的最大值结果。但是在一些深度学习框架中,特别是在多维的场景下,除了得到一系列的最大值之外,还会得到最大值对应的索引。而MindSpore则支持了两种不同的模式(分别依托于两个算子),既可以输出最大值+索引,也可以只输出最大值。
案例演示

首先用PyTorch来演示一下普通的max算子的计算结果:
In : import torch as tc

In : a = tc.arange(9).reshape((3,3))

In : print (a)
tensor([,
      ,
      ])

In : tc.max(a, -1)
Out:
torch.return_types.max(
values=tensor(),
indices=tensor())得到的是一个像字典一样的数据结构,values就是最大值,indices是最大值所在维度的编号。在pytorch里面,没有找到reduce_max的实现,也就是只有这种输出形式。不过在mindspore中,除了普通的max算子,还支持了一个ReduceMax算子:
In : import mindspore as ms

In : from mindspore import Tensor, ops

In : a = ms.numpy.arange(9).reshape((3,3))

In : print (a)
[

]

In : b = ops.ReduceMax(keep_dims=False)(a, -1)

In : print (b)


In : c = ops.max(a, -1)

In : c
Out:
(Tensor(shape=, dtype=Int32, value= ),
Tensor(shape=, dtype=Int32, value= ))这个ReduceMax算子,可以只输出最大值而不输出索引,这在有些情况下可以节约计算空间。
总结概要

本文介绍了在pytorch和mindspore中两种计算张量最大值的算子,如果直接使用max算子,两者的输出都是最大值元素和最大值索引。但是mindspore中额外的支持了ReduceMax算子,可以允许我们只输出最大值而不输出最大值索引。
版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/reduce_max.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

刘凤 发表于 2025-12-7 09:28:31

yyds。多谢分享

萨瑞饨 发表于 2026-1-6 02:41:48

懂技术并乐意极积无私分享的人越来越少。珍惜

骆贵 发表于 2026-1-7 03:30:53

收藏一下   不知道什么时候能用到

徙办 发表于 2026-1-14 19:32:21

谢谢楼主提供!

阎逼 发表于 2026-1-15 01:35:50

感谢分享

全阳霁 发表于 2026-1-18 09:45:32

这个好,看起来很实用

东门芳洲 发表于 2026-1-19 14:36:37

热心回复!

饨篦 发表于 2026-1-20 14:19:00

懂技术并乐意极积无私分享的人越来越少。珍惜

采序 发表于 2026-1-21 19:32:26

懂技术并乐意极积无私分享的人越来越少。珍惜

炀餮氢 发表于 7 天前

鼓励转贴优秀软件安全工具和文档!

萨瑞饨 发表于 6 天前

前排留名,哈哈哈

磁呃泵 发表于 6 天前

懂技术并乐意极积无私分享的人越来越少。珍惜

眸胝 发表于 前天 02:39

新版吗?好像是停更了吧。

祝安芙 发表于 1 小时前

这个有用。
页: [1]
查看完整版本: MindSpore中的ReduceMax和max操作的区别