【DL】血与泪的炼丹心得

记录一些炼丹的心得(都是坑啊)

以下都是经过很多实验得到的炼丹心得,希望对大家有帮助

  1. 模型很复杂,各种网络融合,尝试用更小的学习率和更多的epoch
  2. 学习率预热是个好东西,必须用上,学习率很重要,可以发掘模型的极限,但是无法改变模型的上限,模型的上限取决于其结构,学习率预热在pytorch的实现方法:
from transformers import get_linear_schedule_with_warmup
# 总步长:batch的个数*epoches
t_total = len(train_loader) * epoches
# optimizer:优化器,num_warmup_steps:达到最大学习率的步长,如果为0则一开始就是最大学习率,num_training_steps:总步长
scheduler = get_linear_schedule_with_warmup(optimizer, num_warmup_steps=0, num_training_steps=t_total)
  1. batch_size太小模型不收敛,太大显存吃不消,一般来说batch_size会有一个最大值,32,48,64都可以试试,batch增大,学习率也要稍微增大
  2. 全连接层不需要太复杂,2-3层即可,第二层神经元增加(×2,3,4都可以试试),第三层减小(/2, /10, /100都可以试试),第四层就是我们的输出个数了。
  3. 卷积层(convs)的卷积核个数(out_channels)一般和词(字)嵌入维度差不多,2/3 ~ 3/2 都可以试试。
  4. LSTM的隐藏状态纬度(hidden_size)一般和词(字)嵌入差不多大, 层数(num_layers)一般为1层,两层也可以试试,太多肯定不好。
  5. 不管在lstm里还是全连接层,Dropout是必须的,0.1即可,激活函数用RELU系列。
  6. 模型效果不好,思考一下是否需要归一化,不同向量融合时数值是否差距过大,考虑用全连接层nn.Linear进行一次线性变换。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP饶了我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值