Maybewuss
Maybewuss
#3169 @DeNeutoy I create a PR to ignore ill-formed spans, thanks !
> pgl2.0的主要改动如下: > > 1. 因为是Paddle2.0是动态图了,为了进一步简化使用,我们将GraphWrapper的概念去掉了,目前可以直接在Graph上进行Send/Recv。 > 2. 在pgl 2.0的recv函数的输入将会是一个Message类来代替原来的LodTensor,一个简单的例子如下 > > ``` > import pgl > import paddle > > def send_func(src_feat, dst_feat, edge_feat): > return { "h": src_feat["h"]...
> 我们在GCN/GAT/APPNP 这些模型都测过,基本持平。在动态图上面,少了一些显存交换,跑起来速度甚至更快。 emm,那请问在2.0版本里,面对复杂的用户自定义函数,pgl仍然能能够达到DGL的13倍的运行速度吗?
还是mask,我又看了下OpenNRE,再看了下您的代码,对于mask_piece_pooling这个有点不解: 1. mask在经过mask_embedding后被乘了一个负数,这地方我又两个疑问,第一,你的mask这里貌似没有进行求反,这里应该是给不属于当前分割段落的字符加上一个极小值,然后与x想加,这样求pooling的时候就会忽略这部分。 2. 代码中除了没有求反以外,x = torch.max(x,1)[0] - 100 这里我也看的一头雾水,不明白这里是要做啥。 我觉得应该改成 ``` mask = self.mask_embedding(1-mask).unsqueeze(-2)*1e-9 x = torch.max(mask + x, 1)[0] 或者直接用 x = x.masked_fill(mask == 0,-1e9) ```
好的谢谢,我理解你的意思了,就是在mask为1的位置加上一个大的数,使得max操作的时候只关注这些位置,但是我还是有一点疑问,假如在mask为0的地方的权重比加上100后的还大,这时候怎么办?
我直接用的dense,没有用MultiNonLinearClassifier,然后样本构造应该没啥问题,不知道是不是解码的问题,我解码的时候是要求start end的概率大于0.5并且要求span[start, end]的值也大于0.5。训练过程发现loss下降到一定程度后就不变 了,然后f1值也是一直接近0。然后一般finetune的时候lr都是在5e-5到2e-5之间这样,然后看到这边设置的是8e-6,是专门为了span loss调整的吗?
看代码和论文发现应该用的就是bert_wwm
msra直接用test的数据集用作dev来选模型是不是不太合理?
> > msra直接用test的数据集用作dev来选模型是不是不太合理? > > Lattice LSTM中是这么做的,为了公平比较,我们没有变更实验设定 谢谢,明白了
怀疑是这里引起的 #1084