【Pytorch学习】torch实现clip_by_tensor操作
1.代码实现
def clip_by_tensor(t, t_min, t_max):
t = t.float()
# 输入tensor的各个元素中,与t_min做比较,若小于t_min矩阵中的值,则输出t_min矩阵中的值,大于则保留。
result = (t >= t_min).float() * t + (t < t_min).float() * t_min
# 输入result的各个元素中,与t_max做比较,若大于t_max矩阵中的值,则输出t_max矩阵中的值,小于则保留。
result = (result <= t_max).float() * result + (result > t_max).float() * t_max
return result
2.作用
按元素操作,使数据在min到max之间,小于min的变为min,大于max的变为max。
3.示列
min_tensor = torch.tensor(([1,2,3],[1,2,3],[1,2,3],[1,2,3]))
max_tensor = torch.tensor(([7,8,9],[7,8,7],[7,8,9],[7,8,9]))
init_tensor = torch.tensor(([0,0,0],[4,5,6],[4,5,6],[10,10,10]))
result = clip_by_tensor(init_tensor,min_tensor,max_tensor)
print(result)
=>tensor([[1., 2., 3.],
[4., 5., 6.],
[4., 5., 6.],
[7., 8., 9.]])