计算图与动态图
一、计算图
计算图主要是描述运算的有向无环图,计算图主要有两个部分:结点和边,节点可以表示数据,边表示数据的运算。
叶子结点: 用户创建的结点称为叶子结点
torch.Tensor: data、dtype、shape、device、requires_grad、grad、grad_fn、is_leaf
is_leaf: 指张量是否为叶子结点
grad_fn: 用来记录创建张量时所用的方法
二、动态图
动态图: 运算和搭建同时进行,主要特点为 灵活、易调节
静态图: 先搭建图,后进行运算,主要特点为 高效、不灵活
>>> import torch >>> w = torch.tensor([1.],requires_grad=True) >>> x = torch.tensor([3.],requires_grad=True) >>> a = torch.add(w,x) >>> b = torch.add(w,1) >>> y = torch.mul(a,b) >>> y.backward() >>> print(w.grad) tensor([6.]) >>> print("is_leaf:",w.is_leaf,x.is_leaf,a.is_leaf,b.is_leaf,y.is_leaf) is_leaf: True True False False False >>> print("gradient:",w.grad,x.grad,a.grad,b.grad,y.grad) gradient: tensor([6.]) tensor([2.]) None None None >>> print("grad_fn:",w.grad_fn,x.grad_fn,a.grad_fn,b.grad_fn,y.grad_fn) grad_fn: None None <AddBackward0 object at 0x106007f28> <AddBackward0 object at 0x106007c88> <MulBackward0 object at 0x106007c18>
总结
- 上一篇: Translating Embeddin
- 下一篇: autograd