Environment
- OS: macOS Mojave
- Python version: 3.7
- PyTorch version: 1.4.0
- IDE: PyCharm
0. 写在前面
本文记录了使用 PyTorch 实现简单的线性回归和对率回归的基本流程,包括获得数据、建立模型和训练模型。之后数据和模型更复杂,但是这些 workflow 是一致的。
1. 线性回归
import numpy as np
import torch
import matplotlib.pyplot as plt
import seaborn as sns
class Config:
""" 设置训练相关的参数 """
def __init__(self):
self.epochs = 5000 # 训练迭代数
self.lr = 0.00003 # 学习率
self.vis_interval = int(self.epochs / 10) # 每隔这么多个 epoch 进行一次可视化作图
cfg = Config()
# ========== Step 1/3: 获取数据 ==========
torch.manual_seed(0)
x = torch.linspace(-10, 10, steps=50)
y = 2. * x + 1. + torch.randn(50) * 3 # add some noises
# ========== Step 2/3: 建立模型 ==========
torch.manual_seed(1)
w = torch.randn((1,), requires_grad=True)
b = torch.randn((1,), requires_grad=True)
# ========== Step 3/3: 训练模型 ==========
for epoch in range(1, cfg.epochs + 1):
# ---------- step 1/3: 前向传播计算代价 ----------
out = x * w + b
loss = (0.5 * (out - y) ** 2).mean(<