问题描述
不论是取整,还是四舍五入,都有个近似的方法,写个函数:
def sin_round(x):
return x - torch.sin(2 * np.pi * x) / (2 * np.pi)
这个函数的图像如下:

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

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

并且因为用的 sin
函数是可导的,所以操作完梯度都是有的。
45 👍 / 13 💬
不论是取整,还是四舍五入,都有个近似的方法,写个函数:
def sin_round(x):
return x - torch.sin(2 * np.pi * x) / (2 * np.pi)
这个函数的图像如下:
如果嫌套一层不够的话,可以多叠几次:
这个是近似四舍五入。要向下取整,就平移一下:
并且因为用的 sin
函数是可导的,所以操作完梯度都是有的。