【问题标题】:Indexing one element per row in PyTorch matrix在 PyTorch 矩阵中每行索引一个元素
【发布时间】:2021-11-30 14:48:58
【问题描述】:

price 是一个形状为(num_days, num_products) 的PyTorch 张量。

purchased_product_by_day 是一个整数张量,形状为(num_days,),值在range(num_products)

直观地说,price 列出了每种产品每天的价格,purchased_product_by_day 是购买产品的指数,每天一个。

要获得包含每天费用的张量,我可以这样写

price[list(range(num_days)), purchased_product_by_day]

但这会在 Python 级别迭代数天。我想在 C 级别获得相同的张量。

我试过了

price[:, purchased_product_by_day]

但这不起作用,相当于每天按purchased_product_by_day 索引每一行并堆叠结果。

有没有办法在 Python 级别不进行迭代?

【问题讨论】:

    标签: python indexing pytorch tensor


    【解决方案1】:

    基于Row-wise Element Indexing in PyTorch for C++,Python中的解决方案是

    price.gather(1, purchased_product_by_day.unsqueeze(1)).squeeze()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多