如何在TensorFlow中求取张量最大值同时保留原始形状与维度
TensorFlow获取张量最大值并保留原始形状的实现方法
你可以通过以下两种常用方法实现需求:
方法1:使用reduce_max的keepdims参数+广播机制
tf.reduce_max提供了keepdims参数,设置为True时会保留原始张量的维度数,再通过广播扩展到和输入张量完全一致的形状即可:
import tensorflow as tf x = tf.constant([5, 1, 2, 4]) # 计算最大值时保留维度 max_with_dim = tf.reduce_max(x, keepdims=True) # 广播到原始张量形状 result = tf.broadcast_to(max_with_dim, x.shape)
运行输出符合预期:
<tf.Tensor: shape=(4,), dtype=int32, numpy=array([5,5,5,5], dtype=int32)>
该方法同样适用于高维张量,且保留维度的中间结果适合后续其他张量运算使用。
方法2:使用tf.fill直接生成同形状全最大值张量
如果不需要中间保留维度的最大值结果,可以直接计算标量最大值后,填充为和输入形状一致的张量:
import tensorflow as tf x = tf.constant([5, 1, 2, 4]) max_val = tf.reduce_max(x) result = tf.fill(x.shape, max_val)
运行结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者freak11
相关产品推荐
相关产品推荐

