我在超算运行了我的项目。持续更新经验。先从调参开始学习。
任务号 | 学习率及其策略 | batch_size | 每N轮训练进行一次测试 | 最高的准确率 |
---|---|---|---|---|
学习率刚开始1e-5,开始50轮学习率不变,后面每30轮学习率变为原来的十分之一 | 32 | 5 | 第70轮0.9003。不知道学习率 | |
学习率刚开始0.1,开始50轮学习率不变,后面每50轮学习率变为原来的十分之一 | 128 | 10 | 0.62,准确率甚至有0.01的 | |
学习率刚开始1e-5,开始100轮学习率不变,后面每50轮学习率变为原来的十分之一 | 128 | 5 | 第200轮0.92,但是发现第95轮时,模型都是连续保存的。所以试一试刚开始150轮不变学习率。不知道学习率。 | |
67748 | 学习率刚开始1e-5,开始150轮学习率不变,后面每50轮学习率变为原来的十分之一 | 128 | 从第70轮后开始,每5轮保存一次模型 | 第185轮准确率0.9021956087824351 学习率2.7450980392156867e-06 前100轮模型连续保存准确度达到0.87。所以打算用1e-6训练100轮。 |
67751 | 学习率刚开始1e-6,开始50轮学习率不变,后面每50轮学习率变为原来的十分之一 | 128 | 5 | 前25轮一直在增长,后面到第95轮测试集上的正确率:0.7405189620758483 第95轮目前的预测精度 0.7405189620758483并保存了模型(也就是最大精度) 学习率7.843137254901966e-08 |
67752 | 学习率刚开始1e-6,开始50轮学习率不变,后面每50轮学习率变为原来的十分之一 | 64 | 5 | 前25轮一直在增长,后面第90轮整体测试集上的Loss:266.89525921596214 第90轮测试集上的正确率:0.7345309381237525 第90轮目前的预测精度 0.7345309381237525并保存了模型 1.7647058823529414e-07.为什么1e-5效果好,学习率低反而不行了。 |
67758 | 学习率刚开始1e-5,开始100轮学习率不变,后面每50轮学习率变为原来的十分之一,最后50轮衰减学习率 | 128 | 5 | 看之前0.92的精确度学习率是多少。 |
67758 | 学习率刚开始1e-5,开始100轮学习率不变,后面每50轮学习率变为原来的十分之一,最后50轮衰减学习率 | 64 | 5 | 200轮跑了10.5H,前15轮连续保存了模型,第200轮目前的预测精度 0.9321357285429142并保存了模型 -9.900990099009911e-08,其实第130轮目前的预测精度 0.9321357285429142并保存了模型 6.831683168316832e-06。所以每隔50轮学习率变为原来的十分之一的功能没有凑效。第95轮目前的预测精度 0.9181636726546906并保存了模型 1e-05。所以改为150轮不变,100轮下降看怎么样。或者100轮不变,150轮下降。 |
67759 | 学习率刚开始1e-5,开始100轮学习率不变,后面每50轮学习率变为原来的十分之一,最后50轮衰减学习率 | 128 | 5 | 看之前0.92的精确度学习率是多少。怎么不稳定,第100轮测试集上的正确率:0.8782435129740519 第100轮目前的预测精度 0.8782435129740519并保存了模型 1e-05。后面到150轮了学习率就直接衰减,这个每50轮变为原来的0.1倍的学习率没啥用。第245轮目前的预测精度 0.9001996007984032并保存了模型 3.9603960396039643e-07 |
67760 | 学习率刚开始1e-5,开始150轮学习率不变,后面每50轮学习率变为原来的十分之一,最后50轮衰减学习率 | 128 | 5 | 第100轮测试集上的正确率:0.9101796407185628 第100轮目前的预测精度 0.9101796407185628并保存了模型 1e-05。这说明1e-5训练100轮就没效果了。后面的150轮精确度最低是0.89。 |
67765 | 学习率刚开始1e-5,开始100轮学习率不变,最后150轮衰减学习率 | 128 | 5 | 第95轮目前的预测精度 0.8902195608782435并保存了模型 第195轮测试集上的正确率:0.9041916167664671 |
总结: 1、学习率策略没有被使用 2、学习率从1e-5开始训练效果好 3、检查学习率策略,更改模型后再次测试。后续更新 4、检查模型训练和测试的逻辑 5、读论文,更改模型 6、模型不稳定 |
这是上述表格的数据截图。
这是因为我想模型保存的少一些。
我想每个节点是2个gpu,所以。我需要用下面的#SBATCH --gpus-per-task=2。这样会不会快一些,之前用了8H跑模型。
#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=gpu_128G
#SBATCH -J gputrai
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --error=job.%j.error
#SBATCH --gpus-per-task=2
CONDA_ENV=skin1
#conda activate ${CONDA_ENV}
cd /home/lxtai/anaconda3/envs/skin1/Learn_NewSkinClass20240312/
python train.py
尽管无法使用#SBATCH --gpus-per-task=2,但是任务已经提交上去了。等待吧
之前print学习率都报错了。print(lr)。修正如下。提交任务67748
print(optimizer.param_groups[0]['lr'])
等待结果
67748,在150轮以后,学习率变化成9.803921568627451e-06,因为我设置的50轮变化一次学习率,最后50轮学习率会逐步衰减至0。