我正在尝试对 RNN 输出应用加权平均方案。
RNN 输出由具有维度 (a,b,c)
的张量 A
表示。
我可以简单地采用 tf.reduce_mean(A,axis=1) 来获取具有维度 (a,c)
的张量 C
。
但是,我想沿 axis = 1
对张量 A
进行“加权平均”。
权重在维度为(d,b)
的矩阵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])
获取形状 (a,c
) 的向量 C
>),其中包含使用 B
中指定的权重在 axis=1
上计算 A
的加权平均值。
更新:
你可以这样做:
A = A*B[:,:,None]
它正在对A
和B
进行元素乘法,其中B
存储赋予A<中每个元素的权重
。
然后:
C = tf.reduce_mean(A,axis=1)
将进行加权平均,因为A
中的每个元素都已乘以其权重。
关于python - 如何计算 tensorflow 中张量 A 沿张量 B 指定的权重的轴的加权平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399197/