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-pytorch

class 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_layer
        self.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.使用可视化模块分析结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值