我正在尝试对RNN输出应用加权平均方案。
RNN输出由尺寸为A的张量(a,b,c)表示。
我可以简单地使用tf.reduce_mean(A,axis=1)来获得具有尺寸C的张量(a,c)

但是,我想沿着A进行张量axis = 1的“加权平均”。
权重在尺寸为B的矩阵(d,b)中指定。

对于d = 1,我可以执行tf.tensordot(A,B,[1,1])以获得尺寸(a,c)的结果。
现在对于d=a,我无法计算加权平均值。

有人可以提出解决方案吗?

最佳答案

我不太明白为什么B应该具有尺寸(d,b)。如果B包含仅对一个维度进行A加权平均的权重,则B只需是向量(b,),而不是矩阵。

如果B是向量,则可以执行以下操作:

C = tf.tensordot(A,B,[1,0])以获得形状为C的向量(a,c),其中使用A中指定的权重包含整个axis=1B的加权平均值。

更新:

您可以执行以下操作:

A = A*B[:,:,None]


这是对AB进行元素明智的乘法,其中B存储赋予A中每个元素的权重。
然后:

C = tf.reduce_mean(A,axis=1)


将进行加权平均,因为A中的每个元素都已乘以其权重。

关于python - 如何计算张量A在沿着 tensorflow 中由张量B指定的权重的轴上的加权平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55399197/

10-13 09:37