【问题标题】:Multiply Tensors with different ranks将不同等级的张量相乘
【发布时间】:2023-03-15 01:59:01
【问题描述】:

我想将两个不同等级的张量相乘,例如

tensor A -> (i x j x k x l)
tensor B -> (l x m)

获得另一个具有此尺寸的张量。

tensor C -> (i x j x k x m) = (i x j x k x l)*(l x m)

在 tensorflow 中,我必须一直重塑才能获得输出

(A.reshape(-1,l)*B).reshape(i,j,k,m)

还有其他直接做的操作吗?

【问题讨论】:

  • 您是要按元素对这些张量进行倍增,还是执行(批量)矩阵乘法?
  • 这是一个像这样的矩阵乘法 (i x j x k x l)*(l x m) = (i x j x k x m)。可能是批量矩阵乘法。
  • 但是你需要使用tf.matmul而不是*
  • tf.matmul 给出排名错误(Tensorflow 1.4)。 np.matmul 似乎按预期工作。

标签: tensorflow algebra tensor


【解决方案1】:

您需要tf.tensordot。不需要在实数乘法之前进行整形。如果要沿着 A 的最后一个维度和 B 的第一个维度收缩张量 A 和 B,可以将张量 A 和张量 B 相乘:

tf.tensordot(A, B, axes=[[3], [0]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多