关于with torch.no_grad:的一些小问题

2023-12-20 19:27:40

with torch.no_grad:是截断梯度记录的,新生成的数据的都不记录梯度,但是今天产生了一点小疑惑,如果存在多层函数嵌入,是不是函数内所有的数据都不记录梯度,验证了一下,确实是的。

import torch
x = torch.randn(10, 5, requires_grad = True)
y = torch.randn(10, 5, requires_grad = True)
z = torch.randn(10, 5, requires_grad = True)
def add(x,y,z):
    w = x + y + z
    print(w.requires_grad)
    print(w.grad_fn)
def add2(x,y,z):
    add(x,y,z)
with torch.no_grad():
    add2(x,y,z)
    
add2(x,y,z)
“”“
输出:
False
None
True
<AddBackward0 object at 0x00000250371BED68>
”“”

文章来源:https://blog.csdn.net/qq_45193988/article/details/135108746
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。