Не так аккуратно, как np.clip
, но вы можете использовать torch.max
и torch.min
:
In [1]: x
Out[1]:
tensor([[0.9752, 0.5587, 0.0972],
[0.9534, 0.2731, 0.6953]])
Настройка нижней и верхней границына столбец
l = torch.tensor([[0.2, 0.3, 0.]])
u = torch.tensor([[0.8, 1., 0.65]])
Обратите внимание, что нижняя граница l
и верхняя граница u
являются тензорами 1 на 3 (2D с одноэлементным измерением).Нам нужны эти размеры, чтобы l
и u
были транслируемыми в форме x
.
Теперь мы можем обрезать, используя min
и max
:
clipped_x = torch.max(torch.min(x, u), l)
В результате с
tensor([[0.8000, 0.5587, 0.0972],
[0.8000, 0.3000, 0.6500]])