Zen的小站

小舟从此逝,江海寄余生

0%

【经验】训练网络

文章概览

训练模型

  1. 先固定seed

    1
    2
    3
    4
    SEED = 1
    torch.manual_seed(SEED)
    torch.cuda.manual_seed(SEED)
    torch.cuda.manual_seed_all(SEED)
  2. 先把模型化简:关闭数据增强或其他trick,他们可能带来愚蠢的bug

  3. 批数据过拟合:看看模型是否正确,验证模型能力

解决问题

loss下降中有一段上升

  1. 样本总量太小,突然出现一个差异很大的样本

  2. 数据集的label和特征不匹配

    QQ图片20231010110608

loss缓慢增大

如果迅速下降,并一直上升,可能是学习率过高

loss抖动得特别厉害

多半是lr太大,可以用lr decay

1
2
3
4
5
6
7
8
9
10
my_optim = Adam(model.parameters, lr)
decayRate = 0.96
my_lr_scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer=my_optim, gamma=decayRate)

for e in epochs:
train_epoch()
my_optim.step()

valid_epoch()
my_lr_scheduler.step()

loss周期性剧增

图片数量不能被batch size整除,最后一个batch图片数量少,随机性大

卷积层的大小设置不是很恰当

loss下降达一定程度后抖动

  1. batch_size较小

训练前配置

显存不足

可以调小bs,不过主要还是因为不够用,可以 nvidia-smi 看谁占了进程,给他 kill -9 [DIP] 咯。

持续看 watch -n 1 nvidia-smi

  • 调小batchsize
  • 释放内存 torch.cuda.empty_cache()
  • 查看所有的 .cuda() 类型变量,尽量减少

图像评估

与图像大小有关

PSNR

Peak Signal-to-Noise Ratio 尖峰与噪声的比值

在保证两图像完整相似,又保证最大值很大(?没大理解,可能保证一些歪门邪道)

比较图像相似度最常用的判断指标。

越大越好,差不多37很大了。

ERGAS

Erreur Relative Globale Adimensionnelle de Synthèse

分辨率拉的越大,相对分值就高一些。μk是平均值。

类似PSNR,既保证图像相似,又保证均值大(可能防止一些歪门邪道)

是不是超分类特有的判断指标?

越小越好,可以到个位数

SAM

Spectral Angle Mapper计算光谱向量角度差

分别计算每个像素,最后求平均

越小越好,可以到个位数

MSE(mean square error)

直接均方根,逐个数据比较差距。

可以简称MSE或者RMSE(Root-Mean-Squared Error)。比较基础的。

越小越好。

多想多做,发篇一作

-------------本文结束感谢您的阅读-------------
// 在最后添加