Python 带条件的单线性张量

Python 带条件的单线性张量,python,pytorch,Python,Pytorch,我有两个张量: a = torch.nn.Parameter(torch.rand(7, requires_grad=True)) b = torch.randint(0,60, (20,)) 是否有一条直线(或快速和短的方法)可以创建大小为20(类似于“b”)的张量(称为x),并具有条件? i、 e 我希望我的新张量“x”为: 我将使用这个“x”张量来训练,需要这些值是可反向推进的和可学习的 i、 e 因此,如果某个a不在x中,我希望它不会改变。您可以对条件的乘法掩码求和: x=a[0]*(

我有两个张量:

a = torch.nn.Parameter(torch.rand(7, requires_grad=True))
b = torch.randint(0,60, (20,))
是否有一条直线(或快速和短的方法)可以创建大小为20(类似于“b”)的张量(称为
x
),并具有条件?
i、 e

我希望我的新张量“x”为:

我将使用这个“x”张量来训练,需要这些值是可反向推进的和可学习的

i、 e


因此,如果某个
a
不在x中,我希望它不会改变。

您可以对条件的乘法掩码求和:

x=a[0]*(b
[b<4 use a[0], 4 <=b<12 use a[1], 12<=b<22 use a[2], <28, <38, <50, >50] for every b
b = [12, 93, 54, 0...]
x = [a[2],a[6], a[6]...]
loss = torch.rand(20) * x

loss.backward() ...