预训练之后微调出现的参数一致(总结:模型训练输出一致有模型的参数问题或者模型的结构问题)


今天训练之后发现了相应的问题,即预训练之后微调出现的参数一致。

设想问题1,后面的padding出现问题

inputs = 
{'input_ids': tensor([[   2,  136,    4,  149,  149,   38,  171,    4, 2062,    3,   16,   23,
          148,    4, 8249,    3],
        [   2,   33, 3044,  130,  276,   33,   23,   68,    3,  130,  276,   33,
           23,  215,  216,    3],
        [   2,   16,  624,   33, 1023,  129,   14,  129,    3,   33, 1753,   33,
          265, 1940,    4,    3],
        [   2,  109,  104,    4,    4,   65,   47,   68,   20,    3,  641,   33,
           65,   47,   68,    3],
        [   2,  441,  449,   14,    4,  973,   33,    4,   16,    3,   33,  443,
           16,   10, 1100,    3],
        [   2, 1620,  133,  584,  355,  335,    4,  771,    3,  136,  137,    4,
          335,  469,  771,    3],
        [   2,    1, 6652,  726, 2813,  811, 1903,    4,    3, 1709,    4,  350,
          249, 1180, 6652,    3],
        [   2,   16,   14,   27,  129,    4,    3,   16,    4,  220,    4,    4,
            9,   10,  591,    3],
        [   2,    1,   27,   43,   13,  772,  543,    3,  130,   27,   43,   13,
          772,  543,   79,    3],
        [   2,  908,   33,    4,  443,   16,   15,    3,   33,   14,  443,   16,
           15,    7,  495,    3]], device='cuda:0'), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
        [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]], device='cuda:0'), 'attention_mask': tensor([[True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True],
        [True, True, True, True, True, True, True, True, True, True, True, True,
         True, True, True, True]], device='cuda:0'), 'labels': tensor([[-100, -100,  137, -100, -100, -100, -100,   33, -100, -100, -100, -100,
         -100,  148,  123, -100],
        [-100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
         -100, -100, -100, -100],
        [-100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
         -100, -100,  278, -100],
        [-100, -100, -100,  105,   33, -100, -100, -100, -100, -100, -100, -100,
         -100, -100, -100, -100],
        [-100, -100, -100, -100,  822, -100, -100, 2742, -100, -100, -100, -100,
         -100, -100, -100, -100],
        [-100, -100, -100, -100,  355, -100,  469, -100, -100, -100, -100,  355,
         -100, -100, -100, -100],
        [-100, -100, -100, -100, -100, -100, 1903,  297, -100, -100,  606, -100,
         -100, -100, -100, -100],
        [-100, -100, -100, -100, -100,   62, -100, -100, 5357, -100,   14,   27,
         -100, -100, -100, -100],
        [-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,   43, -100,
         -100, -100, -100, -100],
        [-100, -100, -100,   14, -100, -100, -100, -100, -100, -100, -100, -100,
         -100, -100, -100, -100]], device='cuda:0')}

之前我后面的padding填充的为0,而现在我后面的padding填充的值为-100,可能这里会对交叉熵的损失结果造成影响。
注意这里的padding为0与padding为-100有很大的区别,padding为-100的时候,相当于这个位置的概率不进行计算,而padding为0的时候,这个位置使用数值必须为标记0,如果不使用标记0的时候,会计算出相应的交叉熵损失并反向传播,这样预测的内容多了之后,模型就会偏向于预测0数值,最终模型会偏向于无论传入任何数值,模型都会去预测同一结果的参数

感悟2:如果一个模型开始的时候不论输入什么内容,输出的预测参数都一样,则模型在训练的过程中由于调整的梯度一样,会导致训练之后的结果也会大概率一样

感悟3:今天早上用的另外一个config,maxlen=512,结果在匹配的过程中出现position_embedding没有放进去的情况,导致最后的预测结果全部都为同一个标签

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微调训练模型可以提高模型的性能,而使用向量机模型则可以帮助我们更好地分类数据。以下是一种基本的微调训练模型并使用向量机模型进行分类的方法: 1. 加载训练模型:首先,我们需要加载训练模型,并将其冻结。这意味着我们只会微调最后几个层,而其他层的权重将保持不变。 2. 添加分类层:在训练模型的顶部添加一个新的分类层,该层将用于将输入文本分类。分类层的输出将传递到支持向量机模型中进行分类。 3. 数据准备:准备数据集以进行微调。通常,您需要将数据集拆分为训练集和测试集,并将其转换为与训练模型兼容的格式。可以使用训练模型的tokenizer进行数据处理。 4. 微调模型:使用训练微调训练模型。我们只需要训练最后几层,以便模型可以更好地适应我们的数据集。 5. 获取微调后的特征向量:使用微调后的模型获取特征向量。这些特征向量将用于训练支持向量机模型。 6. 训练支持向量机模型:使用特征向量训练支持向量机模型。可以使用常规的软间隔支持向量机来训练分类器。 7. 在测试集上进行测试:使用测试集测试支持向量机模型,并计算性能指标,如精度、召回率和F1分数。 需要注意的是,这只是微调训练模型并使用支持向量机模型进行分类的基本方法。具体实现可能会因数据集和需求而异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值