← 返回目录


pytorch中如何对tensor进行取整操作且梯度不变为0?

学校≠教育≠技能;文凭溢价=80%信号传递+20%人力资本

44 👍 / 13 💬

问题描述


不论是取整,还是四舍五入,都有个近似的方法,写个函数:

def sin_round(x):
return x - torch.sin(2 * np.pi * x) / (2 * np.pi)

这个函数的图像如下:

如果嫌套一层不够的话,可以多叠几次:

这个是近似四舍五入。要向下取整,就平移一下:

并且因为用的 sin 函数是可导的,所以操作完梯度都是有的。


← 返回目录