I have a dataframe and i want to apply regression. But i want to use weighted L1 loss, so i calculated the weight of each label.

```
bins = np.digitize(train_df.label.values,[50,70,90], right=False)
weights=np.select([bins==1,bins==2,bins==3],[0.75,0.5,0.75])
weights=dict(zip(train_df.label.values,weights))
```

Now i have a dictionary which contain label and its corresponding weight. I want to pass these to my loss function

If i print the loss value after setting `reduction='none'`

i got following output

```
tensor([72.0564, 85.8526, 86.7617], device='cuda:0',
grad_fn=<SmoothL1LossBackward>)
```

but i am confused how to calculate weighted loss.

I am trying some thing like this

```
loss=self.criterion(out,batch["ground_label"].float())
w_ar=torch.tensor([weights[i] for i in batch["ground_label"].numpy()]).cuda()
loss=torch.sum(loss*w_ar)
```

I dont know, this approach is correct or not, and this approach is slow because of cpu gpu conversion, how can i make it faster