考虑我有一组向量 A
,我想将 A
中的每个向量与张量 T
相乘,最终得到一个张量 y
,其中每个切片矩阵是 A
与 T
的向量 v
的乘法结果:
如果 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
与维度 m*n*k
的张量 T
相乘时,我们期望得到维度 m*k/m*1*k
的矩阵/张量 . 这意味着我们的张量具有维数 n*k
的矩阵切片,并且 v
乘以每个矩阵并且所得到的矢量堆叠在一起 .
1 回答
试试tf.tensordot:
要么,
eval
'这给了