文章目录
- 介绍
- Variable 的基本用法
- 创建Variable
- 自动求导
- Modern PyTorch(0.4+)中 Variable 的替代
介绍
torch.autograd.Variable 是 PyTorch 中早期版本用于封装张量(Tensor)以支持自动求导的类。然而,从 PyTorch 0.4 开始,Variable 和 Tensor 已经合并,现在直接使用 Tensor 即可完成所有操作,包括自动求导。因此,在现代 PyTorch 中,通常不需要显式使用 Variable。
Variable 的基本用法
在早期版本中,Variable 的用法如下:
创建Variable
from torch.autograd import Variable
import torch
# 创建一个普通张量
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=False)
# 将张量封装为 Variable
x_var = Variable(x, requires_grad=True) # 设置 requires_grad=True 表示需要计算梯度
print(x_var)
自动求导
Variable 支持自动求导,以下是一个简单的例子:
# 创建一个 Variable
x = Variable(torch.tensor([2.0]), requires_grad=True)
# 定义一个简单的函数 y = x^2
y = x ** 2
# 反向传播
y.backward()
# 查看梯度 dy/dx = 2x
print(x.grad) # 输出:tensor([4.])
Modern PyTorch(0.4+)中 Variable 的替代
从 PyTorch 0.4 开始,Variable 和 Tensor 已经合并,现在直接使用 Tensor 即可完成所有操作。
import torch
# 创建一个张量并启用自动求导
x = torch.tensor([2.0], requires_grad=True)
# 定义一个简单的函数 y = x^2
y = x ** 2
# 反向传播
y.backward()
# 查看梯度 dy/dx = 2x
print(x.grad) # 输出:tensor([4.])