一、相比tensorflow,pytorch的优点:
1、占用内存空间小;
2、源码只有tensorflow的十分之一,方便阅读;
3、调试bug时,报错行一般便是错误所在,而tensorflow一般报错在Sesson.run,错误指示不明了;
4、pytorch进行深度学习,代码简洁易懂,与python语法相似,而tensorflow的代码需要占位等语句,不明晰;
5、在许多测评中,pytorch的速度表现强于tensorflow。
二、Tensor与Varible
1、Tensor是torch中重要的数据结构,与numpy类似
from __future__ import print_function
import torch as t
x = t.Tensor(5,3)
从接口上,对Tensor的操作可以分为两类:
(1)torch.function
(2)tensor.function
如torch.sun(a,b)与a.sum(b)操作等价。
从存储上,对Tensor的操作可以分为两类:
(1)不会修改自身的数据,如a.add(b)
(2)会修改自身的数据,如a.add_(b)
2、autograd.Variable是Autograd中的核心类,封装了Tensor,支持Tensor操作。
Variable主要包含三个属性,
data:保存Variable所包含的Tensor
grad:保存data对应的梯度,是Variable类,形状与data一致
grad_fn:指向一个Function对象,用来反向传播计算输入的梯度
grad在反向传播过程中是累加的,每次反向传播之前,需要将梯度清零。
x.grad.data.zero_()#梯度归零
y.backward()#反向传播
x.grad#计算梯度