pytorch clip

今天在跑程序的时候遇到了loss变为nan的情况,仔细一步步检查了,将错误定位到了这两行:
cos = cos.clip(-1.0, 1.0)
theta = torch.acos(cos)
上述代码是要cos值求一个arccos操作还原出角度来,在这之前先使用clip将其值缩在[-1,1]之间
但是程序运行时会出现nan
将上述代码改为
cos = cos.clip(-1.0 + 1e-7, 1.0 - 1e-7)
theta = torch.acos(cos)
后程序可正常运行
我传入的参数都是32位的float型,但是我多次debug也没有找出究竟是哪个数据导致了其越界,目前不是很清楚clip的内部原理,以后使用clip的时候可以稍微注意一下.

猜你喜欢

转载自blog.csdn.net/qq_43666068/article/details/131584797