科研训练第7周:关于《Learn from Syntax》的Encoder层

博主本周专注于完成SynFue模型的Encoder部分,涉及BERT与局部注意力机制的GCN(LAGCN)集成。在理论研究中,深入理解了GCN的原理,并尝试理解双仿射机制。遇到公式与代码对应问题,已实现GCN模块但存在匹配问题。由于复现困难,计划抽出整块时间集中解决。同时,博主分享了一个BERT的小Demo,并记录了路径管理问题。
摘要由CSDN通过智能技术生成

列一下本周的计划:

  • 项目:完成SynFue模型的Encoder部分的编写(主要包含BERT+LAGCN)
  • 理论部分:GCN的原理(论文)推导【最低要求:起码看懂和会调用】

这个任务应该还算比较轻,时间多的话看看能不能顺便看一下双仿射的机制的实现😃

——————10.25————————
贴一下BERT的一个小Demo,周末结合模型来填一下理论的坑

遇到一个公式对不上的问题【得仔细看一下论文了,好像是细节没搞明白】

class LabelAwareGCN(nn.Module):
    """
    Simple GCN layer
    """
    def __init__(self,dep_dim,in_features,out_features,pos_dim=None,bias=True):
        super(LabelAwareGCN,self).__init__()
        self.dep_dim = dep_dim
        self.pos_dim = pos_dim
        self.in_features = in_features
        self.out_features = out_features

        self.dep_attn=nn.Linear(dep_dim+pos_dim+in_features,out_features)#依赖边的局部注意力机制
        self.dep_fc=nn.Linear(dep_dim,out_features)#对依赖边建模
        self.pos_fc=nn.Linear(pos_dim,out_features)#对于标签的建模

    def forward(self,text,adj,dep_embed,pos_embed=None):
        """
        text:[batch_size,seq_len,feat_dim]
        adj:[batch_size,seq_len,seq_len]
        dep_embed:[batch_size,seq_len,seq_len,dep_type_dim]
        pos_embed:[batch_size,seq_len,pos_dim]
        return:[batch_size,seq_len,feat_dim]
        """
        batch_size,seq_len,feat_dim=text.shape

        val_us=text.unsqueeze(dim=2)
        val_us=val_us.repeat(1,1,seq_len,1)
        # [batch size, seq_len, seq_len, feat_dim]
        pos_us=pos_embed.unsqueeze(dim=2).repeat(1,1,seq_len,1)
        # [batch size, seq_len, seq_len, feat_dim+pos_dim+dep_dim]
        """(5)"""
        val_sum=torch.cat([val_us,pos_us,dep_embed])#TODO:公式(5)
        r=self.dep_attn(val_sum)#TODO:公式(5)

        """公式?"""
        p=torch.sum(r,dim=-1)
        mask=(adj==0).float()*(-1e30)# 没有依赖边关系的mask掉
        p=p+mask
        p=torch.softmax(p,dim=2)
        p_us=p.unsqueeze(3).repeat(1,1,1,feat_dim)

        output=val_us+self.pos_fc(pos_us)
        output=torch.mul(p_us,output)
        
        output_sum=torch.sum(output,dim=2)
        
        return r,output_sum,p

——————10.26————————
因为想休息一下补一下最近落下来的理论课,所以研训今天宣告暂停一天🕊
——————10.27————————
还是没有解决公式与代码的对应问题,而且原文中的一些表示太混乱了

完成了GCN模块的编写,但是公式对应很有问题

果然还是应该抽一整块的时间,零碎的时间复现太不现实了呜呜

————————10.31——————————————————————

就是……这个代码写得很不方便复现的,路径啥的自己跑完还得自己改
因为租用服务器好贵的问题,存一下每次需更改的路径

data/models/towe_16res/config.json

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值