通常,当我们将维度v
的向量1*n
乘以维度T
的张量m*n*k
时,我们希望得到维度{{的矩阵/张量1}} / m*k
。这意味着我们的张量具有m*1*k
个具有维度m
的矩阵切片,并且n*k
与每个矩阵相乘,并且生成的向量堆叠在一起。为了在v
中进行这种乘法,我想出了以下公式。我只是想知道是否有任何内置函数可以直接进行标准乘法运算?
tensorflow
答案 0 :(得分:1)
你可以用:
tf.reduce_sum(tf.expand_dims(v,2)*T,1)
代码:
m, n, k = 2, 3, 4
T = tf.Variable(tf.random_normal((m,n,k)), name="tensor")
v = tf.Variable(tf.random_normal((1,n)), name="vector")
c = tf.stack([v,v]) # m times, here set m=2
out1 = tf.matmul(c,T)
out2 = tf.reduce_sum(tf.expand_dims(v,2)*T,1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
n_out1 = sess.run(out1)
n_out2 = sess.run(out2)
#both n_out1 and n_out2 matches
答案 1 :(得分:0)
不确定是否有更好的方法,但听起来你可以像这样使用tf.map_fn
:
output = tf.map_fn(lambda x: tf.matmul(v, x), T)