【问题标题】:torch row wise cosinus similaritypytorch 行余弦相似度
【发布时间】:2021-01-21 10:34:30
【问题描述】:

假设我有 2 个维度的张量:

  • 张量A:[512, 100]
  • 张量B:[512, 200, 100]

我想使用torch.cosine_similarity 来生成尺寸为[512, 1, 200][512, 200] 的张量C。

使用torch.cosine_similarity(A, B) 我得到一个错误:

'{RuntimeError}张量a(512)的大小必须与非单维1的张量b(200)的大小相匹配'

我想可以通过以下方式完成:

desired_result = torch.stack([torch.cosine_similarity(A_row, B_row, axis=-1) for B_row, A_row in zip(B, A)])

但应该有更优化的方式。任何帮助/提示?

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    无需堆叠,广播将为您完成工作:

    # (512, 100, 1) after unsqueeze
    A = torch.randn(512, 100).unsqueeze(dim=-1)
    B = torch.randn(512, 200, 100)
    
    # (512, 200)
    torch.cosine_similarity(B, A.unsqueeze(1), axis=-1)
    

    【讨论】:

    • 感谢您的回答和我的歉意,因为我错过了张量 B 的尺寸。我已经编辑了我的问题。
    • 您的回答有帮助。是torch.cosine_similarity(B, A.unsqueeze(1), axis=-1)。更新答案以接受它,以防其他人提出。谢谢
    • @MpizosDimitris 抱歉,AFK,很高兴您解决了您的问题,更新了答案。
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2020-08-12
    • 2011-01-01
    • 2019-05-31
    • 2017-12-12
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多