如何将张量中的每个向量乘以向量的每个元素

问题描述

嗨,我真正想要的是如果我们有矩阵W和向量V,例如:

V=[1,2,3,4]
W=[[1,1,1],[1,1]]

我们应该得到结果:

result=[[1,[2,2],[3,3],[4,4,4]]

我在网站上找到了这种方法

V = tf.constant([1,4],dtype=tf.float32)
W = tf.constant([[1,4]],dtype=tf.float32)
tf.multiply(tf.expand_dims(V,1),W)
## produce: [[1,6,8],8,12,16]] 

这正是我想要的,但是当我在模型上实现它时,它还包括向量的批处理大小,在这种情况下会导致错误

with input shapes: [?,297],[?,297,300].

我认为这可能会产生相同的错误

V = tf.constant([[1,dtype=tf.float32)
W = tf.constant([[[1,4]]],W)

我想知道从softmax输出向量中获取每个元素并将其乘以特征张量中每个向量的权重的标准程序是什么

解决方法

我发现通过使用

V = tf.constant([[1,2,4]],dtype=tf.float32)
W = tf.constant([[[1,3,4],[1,4]]],dtype=tf.float32)
h2=tf.keras.layers.multiply([W,tf.expand_dims(V,2)])

对于我们来说,keras层将忽略批量大小部分,但是我们必须更改expand dim的参数,因为在馈入该层之前,我们仍然必须考虑V的批量大小。