当前位置: 首页 > news >正文

python打卡day51@浙大疏锦行

作业:day43的时候我们安排大家对自己找的数据集用简单cnn训练,现在可以尝试下借助这几天的知识来实现精度的进一步提高

Kaggle图像分类与可视化方案

一、数据准备(修改 src/data/preprocessing.py )

# ... existing code ...
def create_dataloader(data_path, batch_size=32):transform = transforms.Compose([transforms.Resize((256, 256)),transforms.RandomHorizontalFlip(),transforms.RandomRotation(15),  # 新增数据增强transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])dataset = datasets.ImageFolder(data_path, transform=transform)return DataLoader(dataset, batch_size=batch_size, shuffle=True)

二、高效CNN模型(修改 src/models/train.py )

from efficientnet_pytorch import EfficientNet  # 需安装 pip install efficientnet-pytorchclass CustomEfficientNet(nn.Module):def __init__(self, num_classes):super().__init__()self.base = EfficientNet.from_pretrained('efficientnet-b3')self.classifier = nn.Sequential(nn.Dropout(0.5),nn.Linear(1536, num_classes))def forward(self, x):features = self.base.extract_features(x)return self.classifier(nn.functional.adaptive_avg_pool2d(features, 1).squeeze())

三、Grad-CAM可视化(新增 src/visualization/gradcam.py )

class GradCAM:def __init__(self, model, target_layer):self.model = model.eval()self.target_layer = target_layerself.activations = []self.gradients = []target_layer.register_forward_hook(self.save_activation)target_layer.register_backward_hook(self.save_gradient)def save_activation(self, module, input, output):self.activations.append(output)def save_gradient(self, module, grad_input, grad_output):self.gradients.append(grad_output[0])def generate(self, input_img, class_idx=None):# ... 完整实现见项目文件 ...

四、精度优化策略

# 训练命令(使用混合精度和余弦退火)
python train.py \--model CustomEfficientNet \--batch-size 64 \--lr 1e-3 \--amp  # 启用混合精度

操作步骤
1. 安装依赖

pip install efficientnet-pytorch albumentations

2.下载Kaggle数据集到 data/raw/kaggle-dataset
3.运行训练脚本
4.使用可视化模块分析结果

http://www.dtcms.com/a/244712.html

相关文章:

  • 如何利用测试Agent自动分析覆盖率报告与缺陷趋势
  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 剑指offer21——反转链表
  • 力扣上C语言编程题:最大子数组和(涉及数组)
  • Qwen3-Embedding-8B:文本嵌入界的“卷王”,多语言检索新标杆!
  • 嵌入式学习笔记 - C语言访问地址的方式,以及指针的进一步理解
  • 简单的五子棋实现简介
  • 6.11本日总结
  • typescript中的泛型
  • 字符串|数组|计算常见函数整理-竞赛专用(从比赛真题中总结的,持续更新中)
  • 使用CSDN作为Markdown编辑器图床
  • 【Python-Day 25】玩转数字:精通 math 与 random 模块,从数学运算到随机抽样
  • 图文教程——Deepseek最强平替工具免费申请教程——国内edu邮箱可用
  • 亚马逊Woot黑五策略,快速提升亚马逊业绩
  • LeetCode - 136. 只出现一次的数字
  • vue3 + ant 实现 tree默认展开,筛选对应数据打开,简单~直接cv
  • Java异步编程难题
  • 渗透测试PortSwigger Labs:遭遇html编码和转义符的反射型XSS
  • 使用Gradle打包springboot项目为JAR包教程
  • SQL进阶之旅 Day 26:分库分表环境中的SQL策略
  • python数据结构和算法(4)
  • 51la查看https统计,悟空统计助力高效运营
  • TensorZero:开源 LLM 应用优化与可观测性平台
  • 如何将照片从Android传输到Mac?
  • Codeforces 2025/6/11 日志
  • ZZU-ARM汇编语言实验 34
  • 一键批量修改XML标签名称:告别手工修改,高效管理标注数据
  • input+disabled/readonly问题
  • (十)量子注意力机制:深度学习与量子计算的交叉融合探索
  • C++面试(5)-----删除链表中指定值的节点