【问题标题】:How to update tensors matching dimensionwise vectors如何更新匹配维度向量的张量
【发布时间】:2021-08-07 11:11:18
【问题描述】:

假设有两个二维张量,A (m × c) 和 B (n × c)。属于 B 的每个行向量也属于 A 即。此外,A 中的行向量不是唯一的,即 A 可能有重复的行。但是,B 中的行向量是唯一的。

还有另一对张量 P (m × f) 和 Q (n × f)。我正在尝试执行以下操作

for i in range(B.shape[0]):
    rv = B[i, :]
    fv = Q[i, :]
    # P[<row indexes of A matching rv>, :] = fv
  1. 如何正确执行此操作?
  2. 是否可以摆脱 for 循环?

【问题讨论】:

    标签: python numpy pytorch torch


    【解决方案1】:

    您可以使用以下掩码:

    for i in range(B.shape[0]):
        rv = B[i]
        fv = Q[i]
        mask = torch.where((A == rv).all(dim=1))[0]
        P[mask] = fv
    

    【讨论】:

    • 谢谢。有什么方法可以完全摆脱 for 循环?
    • @tachyon 因为您需要在A 中查找B 中的每一行,所以我想不出任何可以避免底层for 循环的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多