首页 文章

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

提问于
浏览
0

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

输入:

  • x:长度为n的向量,[x1,x2,...,xn],元素(xi,i = 1,2,... n)是标量 .

  • T:在其第一维中具有长度n的张量,[t1,t2,... tn],元素(ti,i = 1,2,...,n)是具有等级3的张量 .

返回:张量, [x1*t1, x2*t2, ... xn*tn] .

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

1 回答

  • 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将负责广播操作(需要重新整形才能正确执行广播)

相关问题