什么是动态建图?如何动态建图?动态建图为什么可以反向自动求导?
我对于这个问题一直存在疑惑,但是去网上有没有找到好的解释,于是,没办法,自己实验吧。
首先,我们做如下定义:
a = torch.randn(2)
b = torch.randn(2)
c = torch.randn(2,requires_grad=True)
m = a*b
print(m.grad_fn)
q = a*c
print(q.grad_fn)
我们定义a,b为不可自动求导的,而c是可以自动求导的。按照我们的认知,m.grad_fn为None,那q呢?不可求导乘可以求导结果是什么呢?我们进行了打印,输出如下:
None<MulBackward1 object