You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow中argmax与reduce_max函数的区别是什么?

TensorFlow中argmax与reduce_max的核心区别

二者的核心差异在于返回结果的本质,结合代码示例一眼就能明白:


1. 返回值类型完全不同

  • tf.argmax():返回指定维度上最大值所在的索引位置,结果是整数类型张量
  • tf.reduce_max():返回指定维度上的最大值本身,结果与原张量数据类型一致

2. 代码示例对比

先定义一个测试张量:

import tensorflow as tf

# 2维示例张量:2行3列
tensor = tf.constant([[1, 5, 3], [4, 2, 6]])

用argmax的场景

# 沿维度1(行内)取最大值的索引
argmax_row = tf.argmax(tensor, axis=1)
print(argmax_row.numpy())  # 输出: [1 2]

解释:第一行最大值是5,位于索引1;第二行最大值是6,位于索引2,返回的是位置信息。

用reduce_max的场景

# 沿维度1(行内)取最大值
reduce_max_row = tf.reduce_max(tensor, axis=1)
print(reduce_max_row.numpy())  # 输出: [5 6]

解释:直接取出每行的最大值,返回的是数值本身。


3. 多维度场景验证

如果沿维度0(列方向)操作:

# 列方向最大值索引
argmax_col = tf.argmax(tensor, axis=0)
print(argmax_col.numpy())  # 输出: [1 0 1]

# 列方向最大值
reduce_max_col = tf.reduce_max(tensor, axis=0)
print(reduce_max_col.numpy())  # 输出: [4 5 6]

解释:第一列最大值4来自第二行(索引1),第二列最大值5来自第一行(索引0),第三列最大值6来自第二行(索引1);reduce_max则直接给出每列的最大数值。


4. 适用场景总结

  • 需要定位最大值位置时用argmax:比如分类任务中,从预测概率张量里取对应类别的索引
  • 只需要获取最大数值时用reduce_max:比如统计张量中某维度的极值

内容的提问来源于stack exchange,提问作者Snythlord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:18:14