Open lizhzh8 opened 5 years ago
不好意思,最近开始实习,周内没时间回答问题。。。 max_grad_norm 对应的应该是你的最大梯度值,这样可以避免梯度爆炸。这个源码当中的说明已经很清晰了,你也可以在看看。 这个值设置为-1即为不裁剪,我一般设置为1,3,5. 可能是目前做的任务比较简单,对这个参数设置还没有太多心得,你可以去官方的github下面咨询大佬。
你说的正则化指的是l1和l2正则吧,这个是weight_decay这个参数,你可以大概浏览一下pytorch的教程,里面有讲到。当然,这个参数是增加的l2正则项,如果要做l1正则,需要手动添加,这个也很简单,你按照定义把你希望正则的参数遍历,按照l1的定义,把损失加到训练损失里面即可。你可以百度一下,可以搜到相应的代码。
你训练过程中是保留的在验证集上的结果,这个跟最后提交的样本分布之间差异几乎可以忽略。 一般来说,你在验证集上的分数越高,提交分数也会越高。 出现你这种情况,一般看来是因为你两次之间的验证集分数相差不大,这个时候会有一些随机因素使的性能反而下降了,但两者之间的差异应该在千分位之后了,如果要继续提高分数,还需要在预训练上做文章,这个时候调参的作用已经意义不大了。
看源码发现,是不是 max_grad_norm这一项?一般该设置为多少呢?我用你的代码训练时发现 预测数值大的epoch_xx_xxxx模型,在public submit提交时反而分数低。我怀疑是不是过拟合了??如果要设置正则优化方式是不是就是这个参数?谢啦