影响模型的效果

常规情况

下面影响,排名不分先后

1. 已知模块降低了效果

当你的模型,增加一些模块进去时候,你知道这些模块加了后对你的效果产生了下降,可以采用:

  1. dropout方法去降低它对你的模型的影响。
  2. cat原来的输入,然后进行FFC处理。
    整体如下:
# 铺垫函数

class PositionwiseFeedForward(nn.Module):
    "Implements FFN equation."
    def __init__(self, d_model, d_ff, d_out, dropout=0.1):
        super(PositionwiseFeedForward, self).__init__()
        self.w_1 = nn.Linear(d_model, d_ff)
        self.w_2 = nn.Linear(d_ff, d_out)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x):
        return self.w_2(self.dropout(F.relu(self.w_1(x))))


class LayerNorm(nn.Module):
    "Construct a layernorm module (See citation for details)."
    def __init__(self, features, eps=1e-6):
        super(LayerNorm, self).__init__()
        self.a_2 = nn.Parameter(torch.ones(features))
        self.b_2 = nn.Parameter(torch.zeros(features))
        self.eps = eps

    def forward(self, x):
        mean = x.mean(-1, keepdim=True)
        std = x.std(-1, keepdim=True)
        return self.a_2 * (x - mean) / (std + self.eps) + self.b_2
# 这样使用。
emb = self.norm(torch.cat((word_emb, num_emb), dim=-1))
H = self.FFC(emb) + word_emb

2.同样的功能,不同的模型结构对结果有影响。

值得注意,当你的模型中一个模块完成了一个功能,但是有一些无用的初始化,你可能会考虑屏蔽或者删除它。但是要注意!!!当你删除后,哪怕你固定了随机种子,都会对结果有随机影响。是随机的。

你可能感兴趣的:(python,python,深度学习,机器学习)