代码之家  ›  专栏  ›  技术社区  ›  GoingMyWay

PyTorch,按元素应用不同的功能

  •  0
  • GoingMyWay  · 技术社区  · 6 年前

    我定义了这样的张量

    t_shape = [4, 1]
    data = torch.rand(t_shape)
    

    我想对每一行应用不同的函数。

    funcs = [lambda x: x+1, lambda x: x**2, lambda x: x-1, lambda x: x*2]  # each function for each row.
    

    我可以用下面的代码来实现

    d = torch.tensor([f(data[i]) for i, f in enumerate(funcs)])
    

    如何使用PyTorch中定义的更高级API以适当的方式实现这一点?

    0 回复  |  直到 6 年前
        1
  •  3
  •   Wasi Ahmad    6 年前

    我认为你的解决方案很好。但它不适用于任何张量形状。您可以按如下方式稍微修改解决方案。

    t_shape = [4, 10, 10]
    data = torch.rand(t_shape)
    
    funcs = [lambda x: x+1, lambda x: x**2, lambda x: x-1, lambda x: x*2]
    
    # only change the following 2 lines
    d = [f(data[i]) for i, f in enumerate(funcs)]
    d = torch.stack(d, dim=0)