【李宏毅2022 机器学习春】hw2_Classification(strong baseline)

实验记录(acc ≈ kaggle评分)

实验配置:

concat_nframes = 19
batch_size = 2048
num_epoch = 50 
learning_rate = 0.0005
scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=10, eta_min=1e-5)
L2 = 1e-4

nn.BatchNorm1d(2048),
nn.Dropout(0.5), // 没有试过不加dropout,会不会过拟合,不加Dropout结果可以告诉我

实验结果:

hidden_layer=6, hidden_dim=1024:0.733225
hidden_layer=2, hidden_dim=1700:0.746941
hidden_layer=3, hidden_dim=2048:0.752439
hidden_layer=6, hidden_dim=input_dim->2048->2048->1024->512->256->output_dim:0.753701(去年的程序,没有用余弦退火学习率 准确率只有0.70左右上不去)

评分标准

在这里插入图片描述
在这里插入图片描述

收获

余弦退火学习率(大杀器啊,可能以后都会用,逃离局部最优值
参考:https://www.cnblogs.com/chouxianyu/p/12573673.html

利用余弦退火学习率,有的学生可能问了,为什么老是余弦退火啊,用李宏毅老师的话,这都是古圣先贤的意思,用就对了,不过我的理解是使用余弦退火的时候可以很直观的看到哪些学习率是比较合适的,这对我们选择正确的学习率参数很有帮助。

更多的学习率改变函数参考pytorch官网的torch.optim下的How to adjust learning rate : https://pytorch.org/docs/stable/optim.html#torch.optim.lr_scheduler.CosineAnnealingWarmRestarts

简单使用讲解:

import torch.optim.lr_scheduler as lr_scheduler // 引包
scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=10, eta_min=1e-5)  // 定义scheduler 
scheduler.step()  // 每一轮之后改变学习率

在这里插入图片描述


用去年strong的程序过不了strong baseline,让我苦思不得解…
今年2022的数据预处理不友好啊,有点慢,不过可以调成总共19帧,去年是11帧已经给定好了。
然后用上 余弦退火学习率 就能从0.70提升到0.75过strong,笑~
最大的收获是:余弦退火学习率

参考资料

李宏毅2022机器学习HW2解析:https://blog.csdn.net/weixin_42369818/article/details/123632053?spm=1001.2014.3001.5502

[LR Scheduler]余弦退火:https://blog.zhujian.life/posts/6eb7f24f.html

猜你喜欢

转载自blog.csdn.net/weixin_43154149/article/details/123809026