图神经网络七日打卡营最后比赛的一些技巧

本文介绍了深度学习模型训练中的一些实用技巧,包括断点续训、参数调整和模型魔改。作者分享了如何进行在线和离线断点续训,特别是在SGC模型中的应用。此外,建议在模型训练遇到瓶颈时调整学习率和正则化参数来提升性能。还展示了ResGCN的魔改代码,强调了学习率的重要性。最后,邀请读者交流更多训练技巧和经验。
摘要由CSDN通过智能技术生成

断点续训

分为两种,一种我定义为在线断点续训,即不保存模型到本地,停止运行后继续训练,一种是离线断点续训,即保存模型到本地,下次启动项目后接着训练。

这次比赛我尝试了好几种模型,目前好像只有 SGC 模型支持 在线断点续训,其他都会报错,具体做法如下:

  

把  exe.run(startup_program)  注释,再次运行,就是断点续训。

【PaddlePaddle】模型的保存与使用

https://blog.csdn.net/qq_41427568/article/details/87735085

技巧2, 把 epoch 加到 5000,在训练的时候,发现 Valid Acc  没有什么变化,或者不升反降的时候,重新在上面改一下 学习率,还有 weight_decay 也跟着改一下,

就可以让 Valid Acc 继续上升了。

未完继续~

新手上路,也欢迎大神们留言补充,纠正!谢谢~

 

技巧3,魔改模型

小斯哥 童鞋 在 《比赛baseline讲解》最后 魔改了 一个 ResGCN 出来,据他自己说后劲很足,代码如下:

#  16:00 开始看     https://aistudio.baidu.com/aistudio/education/lessonvideo/874892
class Res_GAT(object):
    """Implement of Res_GAT"""
    def __init__(self, config, num_class):
        self.num_class = num_class 
        self.num_layers = config.get("num_layers", 1)
        self.num_heads = config.get("num_heads", 8)
        self.hidden_size = config.get("hidden_size", 8)
        self.feat_dropout = config.get("feat_drop", 0.6)
        self.attn_dropout = config.get("attn_drop", 0.6)
        self.edge_dropout = config.get("edge_dropout", 0.0)

    def forward(self, graph_wrapper, feature, phase):
        if phase == "train": 
            edge_dropout = self.edge_dropout
        else:
            edge_dropout = 0

        feature = L.fc(feature,size=self.hidden_size*self.num_heads,name="init_feature") #  既可以用elu,也可以用relu  **魔改部分**

        for i in range(self.num_layers):
            ngw = pgl.sample.edge_drop(graph_wrapper, edge_dropout) 
            res_feature = feature   # 把上一层的 保存起来 **魔改部分**
            feature = conv.gat(ngw,
                                feature,
                                self.hidden_size,
                                activation=None, # **魔改部分**
                                name="gat_layer_%s" % i,
                                num_heads=self.num_heads,
                                feat_drop=self.feat_dropout,
                                attn_drop=self.attn_dropout)
            feature = feature  + res_feature # 结束的时候把残差加回去 **魔改部分**
            # feature = L.elu(feature) # 结束的时候把残差加回去 **魔改部分**
            feature = L.relu(feature) #  既可以用elu,也可以用relu  **魔改部分**
            feature = L.layer_norm(feature,name = "ln_%s"% i) # 结束的时候把残差加回去 **魔改部分**

        ngw = pgl.sample.edge_drop(graph_wrapper, edge_dropout) 
        feature = conv.gat(ngw,
                     feature,
                     self.num_class,
                     num_heads=1,
                     activation=None,
                     feat_drop=self.feat_dropout,
                     attn_drop=self.attn_dropout,
                     name="output")
        return feature

大家注意把 learning_rate 改为 0.001, 改小一点,因为层数比以前高了,可能容易爆炸或者振荡。

最后,膜拜一下现在榜单上的这些的大神,有幸路过的大神,麻烦把你们 涨点的 经验告知一下~再次代表群里1900多位童鞋感谢你!

大佬的文章出现了,欢迎围观!

https://lan-qing.github.io/blog/201130/today.html

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

往事如yan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值