这个是pytorch的核心功能:
# 自动计算梯度
y.backward()
举个例子:
# 创建一个需要梯度的张量
x = torch.tensor(2.0, requires_grad=True)
# 定义一个计算(例如 y = x^2)
y = x ** 2
# 自动计算梯度
y.backward()
# 查看梯度(dy/dx = 2x,在 x=2 时为 4)
print(x.grad) # 输出: tensor(4.)
以下是一个完整的线性回归模型示例:
import torch.nn as nn
import torch.optim as optim
# 1. 准备数据
X = torch.tensor([[1.0], [2.0], [3.0]])
y = torch.tensor([[2.0], [4.0], [6.0]])
# 2. 定义模型(一个线性层)
model = nn.Linear(1, 1) # 输入维度 1,输出维度 1
# 3. 定义损失函数和优化器
criterion = nn.MSELoss() # 均方误差
optimizer = optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降
# 4. 训练模型
for epoch in range(100):
# 前向传播
outputs = model(X)
loss = criterion(outputs, y)
# 反向传播
optimizer.zero_grad() # 清空梯度
loss.backward() # 计算梯度
optimizer.step() # 更新参数
if (epoch+1) % 10 == 0:
print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')
# 测试模型
test_input = torch.tensor([[4.0]])
predicted = model(test_input)
print(f'预测结果: {predicted.item()}') # 理想输出接近 8.0
15万+

被折叠的 条评论
为什么被折叠?



