PyTorch,按元素应用不同的函数

Goi*_*Way 4 python pytorch

我像这样定义了一个张量

t_shape = [4, 1]
data = torch.rand(t_shape)
Run Code Online (Sandbox Code Playgroud)

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

funcs = [lambda x: x+1, lambda x: x**2, lambda x: x-1, lambda x: x*2]  # each function for each row.
Run Code Online (Sandbox Code Playgroud)

我可以用下面的代码来做到这一点

d = torch.tensor([f(data[i]) for i, f in enumerate(funcs)])
Run Code Online (Sandbox Code Playgroud)

如何使用 PyTorch 中定义的更高级 API 以正确的方式完成此操作?

Was*_*mad 5

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

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) 
Run Code Online (Sandbox Code Playgroud)