例如:
x = torch.tensor([1.], requires_grad=True)
with torch.no_grad():
b = torch.tensor([1.])
y = x * 2 + by和b如何知道应该用requires_grad=False初始化
来自源代码 for torch.no_grad()的AFAIK最终将调用torch._C._set_grad_enabled(False)。我被困在这里是因为我不知道这个电话发生了什么事。它是否在初始化时设置了一个张量可以访问的全局变量,因此张量知道它现在不需要梯度?
发布于 2022-09-26 16:43:33
仅仅因为从其他张量中计算出来的张量在默认情况下从不要求梯度,无论上下文(梯度还是无梯度)。torch._C._set_grad_enabled(False)只需关闭所有方法save_for_backward,这些方法可以保存必要的张量,以便稍后计算后端,并且不创建用于C++背靠背图的节点和边缘。
https://stackoverflow.com/questions/73717108
复制相似问题