在2018年4月份左右 ,facebook 发布了pytorch 0.4.0的更新,其中有重要的一条就是 :
"不再区分 variable和tensor 两者 "
这意味着:新版本中,torch.autograd.Variable 和 torch.Tensor将同属一类。更确切地说:torch.Tensor 能够跟踪历史并像旧版本的 Variable 那样运行; Variable 封装仍旧可以像以前一样工作,但返回的对象类型是 torch.Tensor。 这意味着你不再需要代码中的所有变量封装器。
所以,当下:对于pytorch版本已经是0.13.1左右的pytorch版本来说:variable和torch已经是没啥区别了,可以混用了
如下图所示,我们使用debug运行,虽然定义的是一个tensor类型的数据 x , 运行debug显示:此时的tensor数据像以前的variable类型数据一样,有自己的data属性(包含着数据内容),grad属性用于在计算神经网络是存储梯度,等等 。
【强调一下】神经网络中常用的函数,如Conv2d函数等,函数中的参数,如bias 、weight 等,也都是tensor类型的。所以,他们即存储数据,又可以在被传送进神经网络参与计算时,计算出自身的梯度,并且通过调用step()函数来更新自己的数值。
对于一些variable 和 tensor 存在不同,早期版本的解释:(也可以看看,加深对grad的理解)
(1)PyTorch Variable与Tensor 【详解】
PyTorch Variable与Tensor 【详解】_qq_39809262的博客-CSDN博客_pytorch variable和tensor
(2)
[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) - 腾讯云开发者社区-腾讯云 (tencent.com)
(3)
新版本torch中Variable和Tensor合并 - funnything - 博客园 (cnblogs.com)
当pytorch 0.4版本发布后涉及到的版本更新对代码进行的调整:
(1)Variable和Tensor合并后,PyTorch的代码要怎么改?
Variable和Tensor合并后,PyTorch的代码要怎么改? - 腾讯云开发者社区-腾讯云 (tencent.com)
(2) pytorch 0.4版本 都做了哪些更新:
dd