文章目录
一. 数据集
1.1 获取数据集
Kaggle, 竞赛, Github以及Sklearn内置
1.2 导入PyTorch
数据, 图像打包,表格 和标签转化为Tensor
1.3 数据预处理
分割批次(分割训练集和测试集)
数据预处理主要包括以下四个方面内容:
数据清洗(缺失值以及异常值的处理)
特征工程(基于对现有数据特征的理解构造的新特征,以挖掘数据的更多特点)
同组识别(找出具有明显同组效应且违背整体规律的数据,对其数据进行修正)
筛选子集(对数据进行降维,选择子集)
图像归一化,图像尺寸重调, 图像去重,去除无效图片, etc.
定义数据导入函数
1.4 定义训练需要的一切元素
定义损失函数
定义评估指标, 循环所需要的超参数
定义优化算法及其超参数
1.5 定义训练函数
修正数据结构
正向传播
计算损失
迭代当前权重
清空本轮梯度
完成模型进度与效果监控
测试
迭代停止
1.5 Baseline
建立Baseline, epoch设置>=10
二. 模型选择 (分类网络)
2.1 原图尺寸接近30X30 (特征数量接近1000)
样本量小于6w
数据增强->批次分割->迁移学习->控制网络层数
推荐AlexNet基础上修改ResNet18及以下网络, 谨慎使用VGG
注: VGG不会改变图像尺寸
样本量>=6万
批次分割->GPU计算
ResNet18或者34, VGG13, 16都可尝试
2.2 原图尺寸接近224X224(特征数量接近4w)
样本量小于6w
数据增强->批次分割->迁移学习->控制网络层数
ResNet34及以上Inception系列
样本量>=6万
批次分割->GPU计算
VGG以上任意架构可以尝试各种ResNet和Inception的变体
三. 依据精度和效率选出基准模型, 基于基准模型自建架构以供训练使用
3.1 有GPU
大batch_size 64或者128
大epochs 50或者100
3.2 无GPU
小batch_size 一般是16, 最小是4
小epochs 一般是10, 最小可设置2或者5
是否迁移学习
模型微调
四. 调参
4.1 模型微调(fine-tuning)
参数调整(训练参数)
模型优化
学习率调整
参数初始化
正则化等操作
模型融合
4.2 无法达标
操作错误
忽略,或无法实现论文中某些重要细节
基准模型选择错误
微调思路有误
客观上限
数据质量,数量不达标
论文结构有待考证