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
相关产品推荐
相关产品推荐

