Tensorflow:搜索支持向量 - 张量广播的操作

时间:2017-11-05 14:29:17

标签: python tensorflow

我正在努力实现以下目标:

输入:

  1. x:长度为n的向量,[x1,x2,...,xn],元素(xi,i = 1,2,... n)是标量。
  2. T:第一维长度为n的张量,[t1,t2,... tn],元素(ti,i = 1,2,...,n)为等级为3的张量。
  3. 返回:张量,[x1*t1, x2*t2, ... xn*tn]

    我知道这可以通过tf.stack([x[i]*T[i] for i in range(n)])实现,想知道是否有任何没有迭代的优雅方法。

1 个答案:

答案 0 :(得分:1)

只需将两个向量带到相同的维度:

T = tf.constant([[[[1,1]]],[[[2,2]]]]) 
x = tf.constant([3,4])
xr = tf.reshape(x, [-1,1,1,1])
res = T*xr

正在运行res将打印:

 [[[[3, 3]]],[[[8, 8]]]]

这正是你要求的。

一旦两个张量具有相同的维度,tf将负责广播op(正确执行广播需要重新整形)