手机淘宝客网站怎么做的辽宁建设工程信息网直接发包代理机构流程

张小明 2026/1/9 21:18:54
手机淘宝客网站怎么做的,辽宁建设工程信息网直接发包代理机构流程,昆明网站优化公司,安徽华建建设工程公司网站PyTorch实现Kaggle Dogs vs Cats分类 在深度学习入门的“圣杯”任务中#xff0c;Dogs vs Cats 堪称经典中的经典。这个源自 Kaggle 的图像二分类竞赛#xff0c;不仅数据清晰、目标明确#xff0c;而且非常适合新手从零搭建完整的训练流程——从数据加载到模型微调#x…PyTorch实现Kaggle Dogs vs Cats分类在深度学习入门的“圣杯”任务中Dogs vs Cats堪称经典中的经典。这个源自 Kaggle 的图像二分类竞赛不仅数据清晰、目标明确而且非常适合新手从零搭建完整的训练流程——从数据加载到模型微调再到推理提交。最近我用PyTorch完整跑通了这一流程并基于官方推荐的PyTorch-CUDA-v2.7镜像环境实现了高效训练与部署。项目代码已开源至 GitHub https://github.com/yourname/dogs-vs-cats-pytorch整个过程几乎无需手动配置依赖真正做到了“写完即跑”。下面我会带你一步步走完这条从环境搭建到最终提交的完整路径。环境构建一键启动的 PyTorch-CUDA 镜像这次实验的核心是使用了 PyTorch 官方维护的 Docker 镜像pytorch/pytorch:2.7-cuda12.1-cudnn8-runtime它预装了- Python 3.9- PyTorch 2.7 torchvision torchaudio- CUDA Toolkit支持主流 NVIDIA 显卡- Jupyter Notebook / Lab- SSH 远程接入能力这意味着你不需要再为驱动版本、cuDNN 兼容性或包冲突头疼。无论是本地调试还是云服务器批量训练都能快速拉起一个稳定可用的开发环境。使用 Jupyter 进行交互式开发如果你习惯边写边看结果Jupyter 是最佳选择。只需一条命令即可启动容器并映射端口docker run -it --gpus all \ -p 8888:8888 \ -v $(pwd):/workspace \ pytorch/pytorch:2.7-cuda12.1-cudnn8-runtime \ jupyter notebook --ip0.0.0.0 --allow-root --no-browser访问终端输出的 URL就能进入熟悉的 Notebook 界面。你可以把数据加载、可视化、模型结构检查等操作分步执行特别适合调试和教学场景。通过 SSH 实现后台持久化训练对于长时间运行的任务比如几十个 epoch 的训练更推荐使用 SSH 登录容器内部进行管理。docker run -d --gpus all \ -p 2222:22 \ -v $(pwd):/workspace \ --name dogs_cats_train \ pytorch/pytorch:2.7-cuda12.1-cudnn8-runtime \ /usr/sbin/sshd -D然后通过标准 SSH 命令连接ssh rootlocalhost -p 2222默认密码通常是root具体以镜像文档为准。登录后可以直接运行python train.py结合tmux或nohup实现断开连接后仍持续训练。这种方式更适合生产级部署也方便集成 CI/CD 流程。数据组织自定义 Dataset 类的设计细节原始数据包含两个目录-data/train/约 25,000 张图像文件名为cat.1234.jpg或dog.5678.jpg-data/test1/约 12,500 张无标签图像文件名为1234.jpg为了灵活处理这些数据我们封装了一个继承自torch.utils.data.Dataset的DogCat类。DogCat.py 关键实现import os from PIL import Image import torch.utils.data as data import torchvision.transforms as transforms class DogCat(data.Dataset): def __init__(self, root, transformNone, trainTrue, testFalse): self.test test self.train train self.transform transform # 获取所有图像路径 imgs [os.path.join(root, img) for img in os.listdir(root)] if self.test: # 测试集按文件名排序1234.jpg - id1234 imgs sorted(imgs, keylambda x: int(os.path.splitext(os.path.basename(x))[0])) else: # 训练集打乱顺序 imgs sorted(imgs, keylambda x: int(os.path.splitext(x)[0].split(.)[-1])) if not self.train: # 验证集取后30% split_idx int(0.7 * len(imgs)) imgs imgs[split_idx:] else: # 训练集取前70% split_idx int(0.7 * len(imgs)) imgs imgs[:split_idx] self.imgs imgs def __getitem__(self, index): img_path self.imgs[index] img Image.open(img_path).convert(RGB) # 统一转为三通道 if self.transform is not None: img self.transform(img) if self.test: label int(os.path.splitext(os.path.basename(img_path))[0]) # id 用于提交 else: label 1 if dog in img_path else 0 # dog1, cat0 return img, label def __len__(self): return len(self.imgs)这里有几个值得注意的工程细节所有图像强制转换为 RGB 模式避免灰度图导致输入通道不一致的问题。文件名解析逻辑要小心处理训练集用cat./dog.区分类别而测试集只保留数字 ID。验证集是从训练集中划分出的后 30%确保分布一致性。排序必须严格尤其是测试集否则提交文件顺序错乱会导致评分失败。 小建议可以在初始化时加入assert os.path.exists(root)和日志打印提升调试效率。模型选型ResNet101 微调实战考虑到这是个典型的迁移学习场景我们选用在 ImageNet 上预训练过的ResNet101作为主干网络。原模型最后输出是 1000 类我们需要将其全连接层替换为适应二分类的新头import torch.nn as nn import torchvision.models as models model models.resnet101(pretrainedTrue) # 加载预训练权重 num_features model.fc.in_features model.fc nn.Linear(num_features, 2) # 修改输出维度为 2猫/狗通常做法是先冻结卷积层参数只训练最后的全连接层。待收敛后再逐步解冻部分深层模块如最后一个残差块进一步微调特征提取能力。将模型部署到 GPU 只需一行device torch.device(cuda if torch.cuda.is_available() else cpu) model.to(device)得益于镜像内置的 CUDA 支持.to(device)能自动启用 GPU 加速反向传播和推理都显著提速。训练流程设计从数据加载到验证闭环完整的训练脚本train.py包含了数据增强、优化器设置、学习率调度等多个关键环节。数据增强策略针对小样本图像分类合理的数据增强能有效防止过拟合transform_train T.Compose([ T.Resize((256, 256)), T.RandomCrop((224, 224)), T.RandomHorizontalFlip(p0.5), T.ToTensor(), T.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) transform_val T.Compose([ T.Resize((224, 224)), T.ToTensor(), T.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ])训练时采用随机裁剪和水平翻转验证阶段仅做固定尺寸缩放保持评估一致性Normalize 使用 ImageNet 统计值这是使用预训练模型的前提。DataLoader 构建train_set DogCat(./data/train, transformtransform_train, trainTrue) val_set DogCat(./data/train, transformtransform_val, trainFalse) train_loader DataLoader(train_set, batch_size64, shuffleTrue, num_workers4) val_loader DataLoader(val_set, batch_size64, shuffleFalse, num_workers4)注意验证集不要打乱shuffleFalse便于后续分析错误样本。优化器与学习率调度criterion nn.CrossEntropyLoss().cuda() optimizer optim.SGD(model.parameters(), lr0.001, momentum0.9, weight_decay5e-4) scheduler StepLR(optimizer, step_size5, gamma0.5)使用 SGD 动量 L2 正则化适合初步微调学习率每 5 个 epoch 衰减一次有助于跳出局部最优实际上 AdamW 在这类任务上往往收敛更快可以作为进阶尝试。训练与验证循环def train_epoch(epoch): model.train() running_loss 0.0 for i, (inputs, labels) in enumerate(train_loader): inputs, labels inputs.cuda(), labels.cuda() optimizer.zero_grad() outputs model(inputs) loss criterion(outputs, labels) loss.backward() optimizer.step() running_loss loss.item() if i % 100 0: print(fEpoch [{epoch}/{opt.nepoch}], Step [{i}/{len(train_loader)}], Loss: {loss.item():.4f}) scheduler.step() def validate(epoch): model.eval() correct 0 total 0 with torch.no_grad(): for inputs, labels in val_loader: inputs, labels inputs.cuda(), labels.cuda() outputs model(inputs) _, predicted torch.max(outputs.data, 1) total labels.size(0) correct (predicted labels).sum().item() acc 100 * correct / total print(fValidation Accuracy after Epoch {epoch}: {acc:.2f}%)关键点- 验证阶段一定要加torch.no_grad()节省显存且提升速度- 准确率计算要累计批次总数避免 batch size 不整除带来的偏差- 每轮结束后保存权重防止意外中断丢失进度。最终训练约 20 个 epoch 后验证准确率可达96% 以上。推理与提交生成 Kaggle 可识别的结果文件测试阶段的目标是读取data/test1/下的所有图像预测其属于“狗”的概率并输出符合 Kaggle 提交格式的 CSV 文件。test.py 示例代码import torch import csv from torch.utils.data import DataLoader from dataset.DogCat import DogCat import torchvision.transforms as T # 测试变换无需数据增强 transform_test T.Compose([ T.Resize((224, 224)), T.ToTensor(), T.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) # 加载测试集 test_set DogCat(./data/test1, transformtransform_test, trainFalse, testTrue) test_loader DataLoader(test_set, batch_size64, shuffleFalse, num_workers4) # 加载模型 model models.resnet101(pretrainedFalse) model.fc nn.Linear(2048, 2) model.load_state_dict(torch.load(checkpoints/resnet101_dogcat.pth)) model model.cuda() model.eval() results [] with torch.no_grad(): for images, image_ids in test_loader: images images.cuda() outputs model(images) probs torch.softmax(outputs, dim1)[:, 1].cpu().numpy() # 取狗的概率 ids image_ids.numpy() for _id, prob in zip(ids, probs): results.append([_id, prob]) # 写入 CSV with open(submission.csv, w, newline) as f: writer csv.writer(f) writer.writerow([id, label]) writer.writerows(sorted(results, keylambda x: x[0])) # 按 ID 排序 print(Submission file saved to submission.csv)生成的submission.csv格式如下id,label 1,0.123 2,0.876 ...上传至 Kaggle 即可查看排行榜得分。当前方案通常能达到 Top 30% 左右的成绩。性能优化方向不止于 ResNet101虽然 ResNet101 已经表现不错但仍有多种方式可以进一步提升性能方法效果解冻最后几层卷积层提升泛化能力使用 AdamW 替代 SGD更快收敛添加 MixUp / CutMix 数据增强减少过拟合多模型集成Ensemble显著提高鲁棒性使用 EfficientNet / ViT 等新架构更高精度此外利用镜像对多卡的支持可以通过 DDPDistributedDataParallel加速训练import torch.distributed as dist dist.init_process_group(backendnccl) model torch.nn.parallel.DistributedDataParallel(model, device_ids[args.gpu])只需简单改造即可在多 GPU 环境下实现近线性的训练加速。这种高度集成的容器化开发模式正在成为现代深度学习工程的标准实践。它不仅降低了环境配置门槛也让团队协作、云端部署变得更加顺畅。下次当你面对一个新的视觉任务时不妨试试这套“镜像PyTorch”的组合拳——省下的时间足够你多跑几个实验、调几次超参了。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

建设网站怎么学智能网站建设推荐

想要轻松获取Sketchfab平台上的精美3D模型吗?本文将为你详细介绍一款专为Firefox浏览器设计的Sketchfab获取脚本,通过简单的配置即可实现模型资源的快速获取。这款开源项目采用MIT许可证,让你可以自由使用和修改,满足个性化需求。…

张小明 2026/1/6 19:31:54 网站建设

南昌个人做网站pc网站的优势

论文重复率过高时,采用AI工具辅助改写是高效解决方案之一,通过智能重组句式结构、替换同义词和调整语序,能在保持原意基础上显著降低重复率,例如将"研究表明气候变化导致极端天气增加"改写为"最新数据分析证实全球…

张小明 2026/1/9 15:25:30 网站建设

揭阳专业的网站建设价格洛阳seo博客

想要轻松保存TikTok精彩短视频吗?TikTokDownloader作为一款功能强大的开源下载工具,让您能够快速下载抖音和TikTok平台上的各种视频内容。这款工具支持多种下载模式,操作简单易用,完全免费开放,是您实现TikTok视频下载…

张小明 2026/1/4 19:16:18 网站建设

网站建设简介网站建设及网页设计

校园商铺管理 目录 基于springboot vue校园商铺管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue校园商铺管理系统 一、前言 博主介绍&…

张小明 2026/1/8 3:37:04 网站建设

做网站要租服务器吗美橙互联网站

PyTorch DataLoader 多线程加载数据提升 GPU 利用率 在深度学习训练过程中,一个常见的现象是:明明配备了 A100 或 H100 这样的高性能 GPU,监控工具 nvidia-smi 却显示 GPU 利用率长期徘徊在 20%~30%,而显存占用却很高。这说明模型…

张小明 2026/1/6 19:31:12 网站建设

企业手机网站建设案例北京网站优化推广方案

Anaconda Prompt 常用命令:管理 PyTorch 虚拟环境实用技巧 在深度学习项目中,最让人头疼的往往不是模型调参,而是“在我机器上明明能跑”的环境问题。尤其是当你换一台电脑、分享代码给同事,或者部署到服务器时,PyTorc…

张小明 2026/1/5 14:15:16 网站建设