【发布时间】:2018-11-19 12:31:38
【问题描述】:
考虑我有一组向量A,我想将A 中的每个向量与张量T 相乘,最终得到一个张量y,其中每个切片矩阵是矢量v 在A 和T:
如果X 仅包含一个向量,则以下代码有效(感谢matmul function for vector with tensor multiplication in tensorflow 中的答案):
tf.reduce_sum(tf.expand_dims(v,2)*T,1)
但是如果X 由多个向量组成,那么乘法的代码会是怎样的呢?
例如,对于A(带有2 向量)和T,我有以下值:
A = tf.constant([1,2,3,4], shape=[2,2], dtype=tf.float32) #v1 =[1,2], v2=[3,4]
T = tf.constant([1,2,3,4,5,6,7,8], shape=[2,2,2], dtype=tf.float32)
我想通过将A 乘以T 得到以下输出:
[[[ 7. 10.]
[19. 22.]]
[[15. 22.]
[43. 50.]]]
这个问题的一个应用,是线性回归中的批量梯度下降 y = AX +b,其中我有一组向量,但不是训练权重矩阵X,而是训练张量T,所以输出y 将是一个张量,其中张量中的每个矩阵都是输入向量与T 相乘的输出。
请注意,一般来说,当我们将维度为 1*n 的向量 v 与维度为 T 的张量 m*n*k 相乘时,我们期望得到维度为 m*k/m*1*k 的矩阵/张量。这意味着我们的张量有m 维度的矩阵切片n*k,v 与每个矩阵相乘,得到的向量堆叠在一起。
【问题讨论】:
标签: tensorflow matrix-multiplication tensor