python - 如何计算 tensorflow 中张量 A 沿张量 B 指定的权重的轴的加权平均值?

标签 python tensorflow recurrent-neural-network weighted-average

我正在尝试对 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] 

它正在对AB进行元素乘法,其中B存储赋予A<中每个元素的权重。 然后:

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

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

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

相关文章:

machine-learning - Keras 中的一对多 LSTM

python - 通过pip安装pygame报错

python - 如何使用Tensorflow输入整数向量

python - 如何在 pytorch 中将 2D 数据加载到 LSTM 中

Tensorflow:跨图形传输变量

python - Tensorflow 签名输出占位符

audio - CNN之后的LSTM如何馈入以及什么维度(输入大小)?

python - 为什么 Django 应用程序需要 `manage.py` 而不是使用 `__init__py` ?

python - Pandas date_range - 减去 numpy timedelta 得到奇怪的结果,时间不为 0 :00:00

python - 如何用pivot reshape pandas数据框?