论文中用到的是参数 "side=‘right’ "
这个的含义是找到第一个大于该数的index
但是如果参数 “side=left”,则是
找到第一个大于等于该数的index
返回的值最小值是 0 ,
返回的值可能超出索引的范围 1 个单位。
例子1
cdf = torch.tensor([-1,1,3,5,7,9])
u = -2
inds = torch.searchsorted(cdf, u, side='right')
print(inds)
输出:
tensor(0)
side=‘left’
输出:
tensor(0)
例子2
cdf = torch.tensor([-1,1,3,5,7,9])
u = -1
inds = torch.searchsorted(cdf, u, side='right')
print(inds)
输出:
tensor(1)
side=‘left’
输出:
tensor(0)
例子3
cdf = torch.tensor([-1,1,3,5,7,9])
u = 4
inds = torch.searchsorted(cdf, u, side='right')
print(inds)
输出:
tensor(3)
例子4
cdf = torch.tensor([-1,1,3,5,7,9])
u = 9
inds = torch.searchsorted(cdf, u, side='right')
print(inds)
输出:
tensor(6)
side=‘left’
输出:
tensor(5)
clamp_min、clamp_max
cdf = torch.tensor([-3,-1,0,1,3,5,7,9])
print(torch.clamp_min(cdf, 0)) # 输出的值都大于等于0
print(torch.clamp_max(cdf, 3)) # 输出的值都小于等于3
输出:
tensor([0, 0, 0, 1, 3, 5, 7, 9])
tensor([-3, -1, 0, 1, 3, 3, 3, 3])