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

如何在tf.Tensor中按指定维度提取每个子元素的最大值

问题原因

你定义的张量a形状为(4, 1, 2),调用tf.reduce_max时未指定运算轴参数axis,函数默认会对张量的所有维度做全局最大值聚合,因此只会返回整个张量的全局最大值8。

解决方案

你需要指定对存储子元素数值的最后一个维度(索引为-1或者2)做最大值聚合:

import tensorflow as tf
a = tf.constant([
  [[1, 2]], [[3, 4]],
  [[5, 6]], [[7, 8]]])

# 得到形状为(4,1)的结果,每个位置对应子元素的最大值
res = tf.reduce_max(a, axis=-1)
print(res)
# 输出:
# <tf.Tensor: shape=(4, 1), dtype=int32, numpy=
# array([[2],
#        [4],
#        [6],
#        [8]])>

如果需要直接得到一维的[2 4 6 8]结果,可以额外调用tf.squeeze去掉多余的空维度,或者直接指定聚合轴为[1,2]:

# 方式1:先求最大值再压缩维度
res = tf.squeeze(tf.reduce_max(a, axis=-1))
# 方式2:直接对第1、2位维度做聚合
res = tf.reduce_max(a, axis=[1,2])
print(res)
# 输出:tf.Tensor([2 4 6 8], shape=(4,), dtype=int32)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:36:05