/root/.local/lib/python3.10/site-packages/pyro/infer/autoguide/guides.py
import random
loc = self.loc
scale = self.scale
# 避免原地操作,而是创建一个新的变量, 支持梯度
loc = torch.where(loc < 0.0001, 0.00001, loc)
#loc[loc > 10000] = random.randint(1, 1000)
#print(scale)
#nan_mask = torch.isnan(loc)
#loc[nan_mask] = 0.00001
loc = torch.nan_to_num(loc, nan=0.00001)
# 避免原地操作,而是创建一个新的变量, 支持梯度
scale = torch.where(scale < 0.0001, 0.00001, scale)
#scale[scale > 10000] = random.randint(1, 1000)
#print(scale)
#nan_mask = torch.isnan(scale)
#scale[nan_mask] = 0.00001
scale = torch.nan_to_num(scale, nan=0.00001)
然后吧变量转成 可求导。
self.loc = torch.nn.Parameter(loc)
134

被折叠的 条评论
为什么被折叠?



