尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

4 个任务关卡跑通 PyTorch 图像分类:从训练到部署的 pytorch-deep-learning 实战

4 个任务关卡跑通 PyTorch 图像分类:从训练到部署的 pytorch-deep-learning 实战 4 个任务关卡跑通 PyTorch 图像分类从训练到部署的 pytorch-deep-learning 实战【免费下载链接】pytorch-deep-learningMaterials for the Learn PyTorch for Deep Learning: Zero to Mastery course.项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-deep-learningpytorch-deep-learning 项目是「Learn PyTorch for Deep Learning」课程的完整开源材料用 10 个章节的代码优先教学把 PyTorch 深度学习从张量基础一路带到模型部署。新手卡住的地方通常不在原理而在上手第一步迈不动。本文按跑通最小 Demo → 调优提速 → 接入业务 → 上线交付4 个任务关卡讲怎么用这个项目里的代码做出一个能用的图像分类服务前置条件只有会写几个月 Python。 关卡一十分钟跑通第一次训练与推理最先遇到的现象照着教程 notebook 一个个格子复制运行跑到一半变量失效模型卡在中间。根因是 notebook 状态依赖运行顺序链路没有容错。先别急着写代码把项目拉下来git clone https://gitcode.com/GitHub_Trending/py/pytorch-deep-learning进入 going_modular/ 目录这是最推荐的起点数据加载、模型构建、训练引擎各占一个文件train.py 入口按顺序拼装# train.py数据、模型、训练、保存各司其职 train_dataloader, test_dataloader, class_names data_setup.create_dataloaders( train_dirtrain_dir, test_dirtest_dir, batch_sizeBATCH_SIZE) model model_builder.TinyVGG(input_shape3, # 3 通道 RGB 图像 hidden_unitsHIDDEN_UNITS, output_shapelen(class_names)).to(device) loss_fn torch.nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lrLEARNING_RATE) engine.train(modelmodel, train_dataloadertrain_dataloader, ...) # 训练 5 轮 utils.save_model(modelmodel, target_dirmodels, ...) # 存成 .pth终端执行python train.py等训练结束models/ 目录会出现含状态字典state_dict的 .pth 文件。完成标志训练日志里出现 train_loss、test_acc 等指标且 models/ 下有 .pth 文件。 关卡二用 torch.compile 把训练提速一半第二个现象训练一个 epoch 要几十分钟改一次学习率得等十分钟。根因是 PyTorch 动态图模式逐算子解释执行GPU 调度间隙多。PyTorch 2.0 的答案是建好模型后包一行框架会自动对计算图做算子融合Operator Fusion与图编译compiled_model torch.compile(model) # 一行包裹训练与推理都提速这里很容易踩坑第一个 epoch 反而更慢。如果你好奇 torch.compile 为什么首 epoch 更慢根因就是编译开销第二 epoch 起才见效别看到第一个数字就放弃另外 GPU 越新提速越明显项目官方测试显示 A100 上平均提速 43%。顺手确认数据侧两个参数data_setup.py 里 num_workers 用满 CPU 核心并行读图pin_memoryTrue 让数据进 GPU 更快90% 的场景这样就够。完成标志编译后记录第 2、3 epoch 的单轮耗时对比未编译基线明显更短。 关卡三把 Notebook 拆成可复用脚本第三个现象三个实验的代码在多个 notebook 里复制粘贴改一处数据路径漏改另一处。根因是 notebook 是草稿要当业务维护时代码得是组件。项目把职责拆成 5 个文件结构一目了然going_modular/ ├── data_setup.py # 数据集与 DataLoader 构建 ├── model_builder.py # 模型结构TinyVGG ├── engine.py # train_step / test_step / train ├── utils.py # 模型保存 └── train.py # 命令行入口复用率最高的是 create_dataloaders只要目录是 train/、test/ 子目录按类名分图改个路径就能用train_data datasets.ImageFolder(train_dir, transformtransform) # 自动读取类名 train_dataloader DataLoader(train_data, batch_sizebatch_size, shuffleTrue, num_workersnum_workers, pin_memoryTrue)这段解决的是同一套加载逻辑只写一次之后所有实验只换目录传参。完成标志新开终端不打开 notebook直接python train.py能完整跑完训练。 关卡四把模型变成网页服务最后一个现象模型存在 .pth 里重启电脑后只有你知道它在哪、怎么用。目标是让任何人打开浏览器就能用。项目的部署章节09_pytorch_model_deployment.ipynb用 Gradio 搭界面核心就两步加载模型、把图片转成和训练时一致的张量再预测。推理要点已封装在 predictions.pymodel.eval() # 必须切评估模式 with torch.inference_mode(): # 关闭梯度计算推理更快 transformed_image image_transform(img).unsqueeze(dim0) # 补 batch 维 target_image_pred model(transformed_image.to(device)) target_image_pred_probs torch.softmax(target_image_pred, dim1) # 转成概率接服务时记住预处理必须和训练时完全一致——训练时 Resize 到 224x224 并归一化推理就得照做否则准确率会明显掉。这是 PyTorch 模型部署最常见的坑。完成标志launch 后浏览器弹出页面能上传 data/ 里的披萨图并输出预测类别与置信度。下一步就做克隆仓库进入 going_modular/ 目录解压 pizza_steak_sushi.zip 到 data/ 后运行python train.py在 train.py 里给模型加一行torch.compile()连跑 3 个 epoch 对比单轮耗时变化参照 09_pytorch_model_deployment.ipynb 的 Gradio 部分把 models/ 里的 .pth 模型包成本地网页让同事验证一次【免费下载链接】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),仅供参考
返回列表