这篇笔记是 PyTorch 基础点还有自己写代码时容易卡壳的地方整理了一下。主要包含 Tensor 操作、自动求导逻辑、线性回归模型构建、以及 GPU 环境切换。1. Tensor张量基础操作Tensor 是 PyTorch 最核心的数据格式。咱们平时处理图像或者文本最后全都要转成这玩意。维度代表的意思0 维 (Scalar)就是一个数比如 Loss 值。1 维 (Vector)一维数组。代表一个样本的特征比如一个词向量。2 维 (Matrix)二维数组。代表多个样本的特征集合行是样本列是特征。3 维/4 维 (High-dim)图像里最常用格式通常是 [Batch大小, 通道数, 高, 宽]。跟 NumPy 互转实战高频import torch import numpy as np # 1. Numpy 转 Tensor np_data np.array([1.0, 2.0, 3.0]) tensor_data torch.from_numpy(np_data) # 2. Tensor 转 Numpy np_data_back tensor_data.numpy() # 3. 改变形状PyTorch 中用 view x torch.zeros(4, 4) y x.view(-1, 8) # -1 代表自动计算维度这里会自动转成 2x8 print(y.size()) # 查看维度信息2. 自动求导机制 (Autograd)PyTorch 强在能自动算反向传播的梯度。标记求导在创建 Tensor 时指定 requires_gradTrue系统就会追踪这个变量。链式法则调用 .backward() 时它会顺着计算图瞬间算出所有权重参数的梯度。避坑指南梯度累加PyTorch 的梯度默认是累加的。所以每次训练前必须清零梯度optimizer.zero_grad()不然跑出来的梯度全是错的。3. 模型构建与训练线性回归代码示例这是一个完整的线性回归构建逻辑。第一步定义模型类import torch.nn as nn class LinearRegressionModel(nn.Module): def __init__(self): super(LinearRegressionModel, self).__init__() # 定义一个全连接层输入1维输出1维 self.linear nn.Linear(1, 1) def forward(self, x): # 规定数据的前向传播逻辑 out self.linear(x) return out model LinearRegressionModel()第二步配置训练参数# 定义损失函数 (回归任务常用 MSE) criterion nn.MSELoss() # 定义优化器 (SGD 随机梯度下降) optimizer torch.optim.SGD(model.parameters(), lr0.01)第三步核心训练循环通用模板epochs 1000 for epoch in range(epochs): # 将输入数据转为 Tensor inputs torch.from_numpy(x_train_numpy) labels torch.from_numpy(y_train_numpy) # 1. 梯度清零 (必须放在最前面) optimizer.zero_grad() # 2. 前向传播 (拿到模型预测结果) outputs model(inputs) # 3. 计算损失 (对比预测值与真实标签) loss criterion(outputs, labels) # 4. 反向传播 (自动求导算出梯度) loss.backward() # 5. 更新参数 (优化器执行一步更新) optimizer.step() if (epoch1) % 50 0: # 用 loss.item() 把 Tensor 转回普通数值打印 print(fEpoch [{epoch1}/{epochs}], Loss: {loss.item():.4f})4. GPU 加速与模型保存切换 GPU 训练# 判断是否有可用 CUDA 环境 device torch.device(cuda if torch.cuda.is_available() else cpu) # 1. 把模型搬到显卡上 model.to(device) # 2. 训练循环里把数据搬到显卡上 inputs inputs.to(device) labels labels.to(device)模型保存与读取# 推荐保存权重参数字典 (state_dict) torch.save(model.state_dict(), my_model.pkl) # 读取模型 (要先实例化上面的类) model.load_state_dict(torch.load(my_model.pkl))5. 关于 torch.hub 的说明torch.hub 是官方的模型库Model Zoo里面有很多预训练好的模型如 ResNet、Transformer。加载方法# 一行代码加载预训练模型 model torch.hub.load(pytorch/vision, resnet18, pretrainedTrue)碎碎念虽然调包很省事但咱们在打基础阶段还是得少用。大作业或者平时练手先把最基础的层Linear、Conv2d 等练熟以后再用这些预训练模型会更有底。