我正在尝试对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=1
中B
的加权平均值。
更新:
您可以执行以下操作:
A = A*B[:,:,None]
这是对
A
和B
进行元素明智的乘法,其中B
存储赋予A
中每个元素的权重。然后:
C = tf.reduce_mean(A,axis=1)
将进行加权平均,因为
A
中的每个元素都已乘以其权重。关于python - 如何计算张量A在沿着 tensorflow 中由张量B指定的权重的轴上的加权平均值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55399197/