如何更新匹配维度向量的张量
Posted
技术标签:
【中文标题】如何更新匹配维度向量的张量【英文标题】: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
-
如何正确执行此操作?
是否可以摆脱 for 循环?
【问题讨论】:
【参考方案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 循环的方法。以上是关于如何更新匹配维度向量的张量的主要内容,如果未能解决你的问题,请参考以下文章
Recurrentshop 和 Keras:多维 RNN 导致维度不匹配错误
维度不匹配:数组 'cov' 的形状为 (1, 1),但 'mean' 是长度为 2 的向量
如何在 Keras / Tensorflow 中将(无,)批量维度重新引入张量?