资讯动态

一条命令跑通PyTorch图像分类:从训练到存模型

发布时间:2026/9/8 21:18:33 来源:尧图企业网站定制
一条命令跑通PyTorch图像分类从训练到存模型【免费下载链接】pytorch-deep-learningMaterials for the Learn PyTorch for Deep Learning: Zero to Mastery course.项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-deep-learning如果你看 PyTorch 的文档和零散示例却始终拼不出一个能训练、能测试、能存模型的完整项目这篇文章帮你在 10 分钟内用 pytorch-deep-learning 这个课程仓库跑通一条完整的图像分类流水线克隆仓库、解压数据、执行一条命令几分钟后得到一个训练好的.pth模型文件。环境搭建和第一次训练 依赖只有三个包torch、torchvision、tqdm进度条。仓库里没有requirements.txt但训练脚本用到这些库的地方不多装完就能跑。git clone https://gitcode.com/GitHub_Trending/py/pytorch-deep-learning cd pytorch-deep-learning unzip data/pizza_steak_sushi.zip -d data/ pip install torch torchvision tqdm python going_modular/going_modular/train.py最后这条命令就是全部。运行后终端会逐行打印每个 epoch 的train_loss、train_acc、test_loss、test_acc跑完自动把模型权重存进models/目录。仓库里已经附带训练好的模型如going_modular/models/05_going_modular_script_mode_tinyvgg_model.pth想先看看效果可以直接拿它做预测。两个注意点解压后训练数据必须落在data/pizza_steak_sushi/train、测试数据在data/pizza_steak_sushi/test路径不对会在建数据集时报错另外务必在仓库根目录执行最后那条命令原因下一节讲。拆解engine.py 的训练循环在干什么 整个going_modular/going_modular/目录把项目拆成 5 个各司其职的文件data_setup.py负责把目录变成 DataLoadermodel_builder.py负责网络结构一个照搬 CNN Explainer 的 TinyVGG 卷积网络utils.py负责保存模型train.py只是配置页而真正干活的训练逻辑集中在engine.py的train_step里核心就这几行for batch, (X, y) in enumerate(dataloader): X, y X.to(device), y.to(device) y_pred model(X) # 前向传播 loss loss_fn(y_pred, y) # 算损失 optimizer.zero_grad() # 清空梯度 loss.backward() # 反向传播 optimizer.step() # 更新参数它为什么这样设计训练循环本身没有任何魔法难点在于它要同时管数据搬运、设备CPU/GPU切换、梯度和指标统计。engine.py把这些封成train_step和test_step两个函数外面再用train()按 epoch 调度所以train.py才薄到只有 30 行——你换数据集、换模型、换损失函数时只动配置页循环代码一行不碰。这也是你在真实 PyTorch 项目里最常看到的那种工程结构。test_step与train_step的区别一句话带过测试时用model.eval()关掉 Dropout 类行为并用torch.inference_mode()省掉不保存计算图。调参对照表改哪个数字有什么用 ️所有关键参数都集中在going_modular/going_modular/train.py开头NUM_EPOCHS 5、BATCH_SIZE 32、HIDDEN_UNITS 10、LEARNING_RATE 0.001图像尺寸则在同文件的transforms.Resize((64, 64))里参数默认值调大的效果调小的效果NUM_EPOCHS5更充分收敛但更慢可能过拟合快速试参欠拟合风险BATCH_SIZE32单 epoch 更快显存占用更高省显存梯度更抖HIDDEN_UNITS10模型容量更大、参数更多模型更小更好训但表达力受限LEARNING_RATE0.001下降更快容易震荡甚至不收敛更稳但收敛慢图像尺寸 (64, 64)64×64细节更多训练更慢更快细节丢失另外data_setup.py里NUM_WORKERS默认取os.cpu_count()多核机器上数据加载会自动并行。判断调参方向的标尺是损失曲线训练集和测试集损失都下降且差距稳定是理想状态训练损失持续降而测试损失开始回升就是过拟合这时候先加 epoch 之外的手段——降学习率、调小 HIDDEN_UNITS 都比硬堆数据更直接。进阶玩法torch.compile 一行提速 训练跑通之后如果你的 torch 是 2.0可以在本地克隆的going_modular/going_modular/train.py里、创建模型之后加一行model torch.compile(model)第一个 epoch 会因为编译开销变慢之后逐 epoch 提速。仓库的extras/pytorch_2_intro.ipynb专门讲了 PyTorch 2.0 的这些新特性extras/pytorch_2_results/里还有 ResNet50 在 CIFAR10 上 compiled 与非 compiled 的实测 CSV 和曲线图比如下面这张 RTX 4080 上逐 epoch 训练耗时的对比可以直接对照自己的机器验证提速幅度。踩坑记录第一次跑最常撞的四个错 ⚠️FileNotFoundError/ 数据集为空→ 解压后目录层级和data/pizza_steak_sushi/train对不上 → 检查解压结果必要时把 train、test 两层的子目录挪到正确位置。ModuleNotFoundError: No module named data_setup→ 在错误的目录层级启动脚本 → 在仓库根目录执行python going_modular/going_modular/train.pyPython 会自动把脚本所在目录加入搜索路径。训练奇慢日志显示跑在 cpu 上→ 装的是 CPU 版 torch → 按SETUP.md重装带 CUDA 的版本或直接换 Colab 免费 GPU 跑。CUDA out of memory→ BATCH_SIZE 或图像尺寸太大 → 先把 BATCH_SIZE 从 32 降到 16 再重试。下一步往哪走 这个仓库能覆盖的范围是从张量基础到图像分类训练、实验跟踪再到模型部署的完整代码教学但不提供开箱即用的模型 API也不涉及 NLP 和时间序列方向。建议的延伸路径extras/pytorch_cheatsheet.ipynb当速查表随手查06_pytorch_transfer_learning.ipynb学用预训练模型提精度extras/pytorch_extra_resources.md里有按方向的延伸资源清单。【免费下载链接】pytorch-deep-learningMaterials for the Learn PyTorch for Deep Learning: Zero to Mastery course.项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-deep-learning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价