【问题标题】:Calculate average of tensor and use this value as the tensor value计算张量的平均值并将此值用作张量值
【发布时间】:2025-12-01 01:35:02
【问题描述】:

我对张量不太了解,如果这是一个愚蠢的问题,请原谅我。

我正在尝试使用 Keras 的 Lambda 层为我的模型添加一个特殊层。 我想让这个层计算张量的平均值,我希望这个平均值用作张量值。

为了更清楚,这是我需要的,但在 numpy 中,我不知道如何使用张量来做到这一点: (使用 NumPy 不适用于张量)

   colInput ## this should be my tensor
   avg = np.mean(colInput)
   colInput =[avg for n in range(colInput.shape[0])]

我确实尝试了以下方法:

avg = tf.reduce_mean(colInput)

我也试过了:

avLayer= Lambda(lambda x: tf.reduce_mean(x, axis=1, keepdims=False))(visible)

where visible 有我的 colInput 作为输入层,但我无法为张量中的每个元素创建结果集,并使用这个新张量。

我的张量形状是 (?,1,27) 我希望它有这个 27,但它们将等于平均值​​。

提前致谢

【问题讨论】:

  • 所以如果你的输入张量是[[1, 2, 3, 4]],你希望输出是[[2.5, 2.5, 2.5, 2.5]]
  • 是的,没错

标签: python tensorflow keras average


【解决方案1】:

我不确定这是否是你想要的,但请告诉我-

xx = tf.constant([1., 0., 1., 0.])
tf.expand_dims(tf.repeat(tf.reduce_mean(xx), xx.shape[0]), axis=1)
输出将是
<tf.Tensor: shape=(4, 1), dtype=float32, numpy=
array([[0.5],
       [0.5],
       [0.5],
       [0.5]], dtype=float32)>

【讨论】:

  • 谢谢 Sai,这与我需要的概念相同,但是您的数据形状是 (4,),您能帮我看看这对数据形状 (?,1,27) 有何作用,请问?
  • In[56]:tf.reshape(tf.repeat(tf.reduce_mean(xx), xx.shape[0]), [1,1,4]) Out[56]: &lt;tf.Tensor: shape=(1, 1, 4), dtype=float32, numpy=array([[[0.5, 0.5, 0.5, 0.5]]], dtype=float32)&gt; 这是您在上面看到的示例的扩展,我认为您可以将重塑尺寸重新设置为 [1,1,27] 以满足您的需求