我正在尝试对 RNN 输出应用加权平均方案。
RNN输出用张量表示A
有维度(a,b,c)
.
我可以简单地采取tf.reduce_mean(A,axis=1)
得到张量C
有维度(a,c)
.
但是,我想做张量的“加权平均值”A
along axis = 1
.
权重在矩阵中指定B
有维度(d,b)
.
For d = 1
, 我可以tf.tensordot(A,B,[1,1])
得到尺寸结果(a,c)
.
现在为d=a
,我无法计算加权平均值。
有人可以提出解决方案吗?
我不太明白为什么B
应该有尺寸(d,b)
. If B
包含仅在一个维度上对 A 进行加权平均的权重,B
只需是一个向量(b,)
,不是矩阵。
If B
是一个向量,你可以这样做:
C = tf.tensordot(A,B,[1,0])
得到一个向量C
形状的(a,c
) 其中包含的加权平均值A
across axis=1
使用中指定的权重B
.
Update:
你可以这样做:
A = A*B[:,:,None]
这是进行元素明智乘法A
and B
, where B
将赋予每个元素的权重存储在A
.
Then:
C = tf.reduce_mean(A,axis=1)
将进行加权平均,因为中的每个元素A
已乘以它的重量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)