模型代码学习-CLS文本分类-Bert-Chinese-Text-Classification-Pytorch代码学习-训练并测试过程

Reference:https://github.com/649453932/Bert-Chinese-Text-Classification-Pytorch

模型代码学习-CLS文本分类-Bert-Chinese-Text-Classification-Pytorch代码学习-训练并测试过程

baseDir: Bert-Chinese-Text-Classification-Pytorch/

目录

./train_eval.py学习

全局

def init_network(model, method='xavier', exclude='embedding', seed=123):

def train(config, model, train_iter, dev_iter, test_iter):

def evaluate(config, model, data_iter, test=False):

def test(config, model, test_iter):

./run.py学习


./train_eval.py学习

全局

  • 在import来看,从sklearn里import了metrics,或许是测试过程中使用?->在测试过程中进行了使用,看起来加入normalize=False后是统计有几个对的,不加入后就是相较于整体个数的百分比
>>> from sklearn.metrics import accuracy_score
>>> y_pred = [0,0,0,2,1,3,4,5]
>>> y_true = [0,0,0,6,6,6,6,6]
>>> accuracy_score(y_true, y_pred)
0.375
>>> accuracy_score(y_true, y_pred, normalize=False)
3
  • import了pytorch_pretrained_bert.optimization中的BertAdam,BERT版本具有权值衰减固定、预热和学习速率线性衰减的Adam Optimizer。
# coding: UTF-8
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
from sklearn import metrics
import time
from utils import get_time_dif
from pytorch_pretrained_bert.optimization import BertAdam

def init_network(model, method='xavier', exclude='embedding', seed=123):

  • 这个函数在哪里被调用了,怎么感觉没有找到->似乎没有,暂时忽略了
  • 从入参来看,seed=123该怎么理解,似乎没有用到?->所有seed字段的目标似乎都是为了结果的“可复现”,根据讨论后,在同一台机器上如果使用完全相同的seed,这样可能会在各类参数随机初始化的过程中成为一定的“随机定值”,使得结果可复现。但是讨论后认为在一些实验中如果不同机器使用了相同的seed,可能也没有效果。
# 权重初始化,默认xavier
def init_network(model, method='xavier', exclude='embedding', seed=123):
    for name, w in model.named_parameters():
        if exclude not in name:
            if len(w.size()) < 2:
                continue
            if 'weight' in name:
                if method == 'xavier':
                    nn.init.xavier_normal_(w)
                elif method == 'kaiming':
                    nn.init.kaiming_normal_(w)
                else:
                    nn.init.normal_(w)
            elif 'bias' in name:
                nn.init.constant_(w, 0)
            else:
                pass

def train(config, model, train_iter, dev_iter, test_iter):

  • 入参是config,模型model,还有train,valid,test三个数据集的iter
  • 当前时间作为开始时间
  • model.train怎么理解,追溯传参来源run.py model = x.Model(config).to(config.device) ,model_name = args.model  # bert x = import_module('models.' + model_name) config = x.Config(dataset),所以这里的model.train是否是来自pretrain bert的.train()方法?->目前来看model.train()是把model切换到train的状态,与model.eval()把模型切换到evaluate状态相对应,由于dropout等问题,模型在训练和测试过程中可能需要具有不同的状态(例如在验证、测试过程中不希望不同次的验证、测试有不同的结果,所以需要关闭dropout)
  • 所有config内容来自于./models/bert.py中,如果要对超参进行调整,在bert.py进行调整即可
  • 以下关于optimizer的设置怎么理解->这里的warmup可以理解为让学习率先增大,后减小,或许这样可以尽快锁定一个区间,从而在这个区间来细化优化,另注,在讨论后认为在fine-tune过程中学习率不宜过大,要稍微小写
  • param_optimizer = list(model.named_parameters())
  • no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight']
  • optimizer_grouped_paramete
  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bert-chinese-text-classification-pytorch一个基于PyTorch中文文本分类模型,使用预训练BERT模型进行特征抽取和分类。该模型可以应用于各种中文文本分类任务,如情感分析、文本分类等。 ### 回答2: bert-chinese-text-classification-pytorch一个使用BERT(Bidirectional Encoder Representations from Transformers)模型实现的中文文本分类工具,它基于PyTorch框架,旨在帮助研究人员和开发者更快、更准确地进行中文文本分类任务。 BERT模型是目前最先进的自然语言处理模型之一,它通过双向Transformer编码器学习到了上下文信息,能够更好地处理自然语言中的语境问题。bert-chinese-text-classification-pytorchBERT中文文本分类相结合,既能够较好地处理中文文本的复杂性,同时也能够提供更准确的分类结果。 在使用bert-chinese-text-classification-pytorch进行中文文本分类任务时,用户需要提供需要分类的中文文本数据集,并进行预处理,如分词、打标签等。然后,用户可以使用该工具自动生成BERT模型,根据需要进行fine-tune,并使用训练好的模型进行中文文本分类任务,可以是二分类或多分类任务,根据分类效果可以进行模型优化。 相比传统的中文文本分类方法,bert-chinese-text-classification-pytorch具有更好的性能和准确度,可以帮助用户快速完成中文文本分类任务,并提高分类效果。同时,该工具还提供了详细的文档和示例,方便用户学习和使用。 总之,bert-chinese-text-classification-pytorch一个高效、准确的中文文本分类工具,可以帮助用户更好地处理中文文本中的分类问题,推动中文自然语言处理技术的发展。 ### 回答3: bert-chinese-text-classification-pytorch是基于深度学习框架pytorch实现的中文文本分类模型,它采用了预训练BERT模型作为基础,能够处理多种类型文本,包括长文本、短文本、带有标点、数字、符号的文本。 BERT在自然语言处理领域被广泛应用,因为它在预训练过程中能够深度学习文本本质,产生了很高的性能和效率。BERT的预训练模型(即BERT模型)为文本中的每个单词生成向量,从而捕获单词之间的关系,这种能力进一步扩展到了中文文本分类中。 bert-chinese-text-classification-pytorch提供了一个完整的预处理流程,包括对于中文文本的分词和标记化处理,使用pytorch中的Dataset和Dataloader将数据进行整合和采样,并在模型训练时进行了交叉验证和模型评估。 除了这些,bert-chinese-text-classification-pytorch还提供了对实时数据集的使用以及多个指标(如准确率、精确率、召回率和F1分数)的测试和输出。这些指标能够帮助计算模型在分类任务中的表现,并唯一地对每个类别进行计算。 总之,bert-chinese-text-classification-pytorch提供了一个高效、可定制、易用的中文文本分类工具,可以轻松地应对中文文本分类任务,而且对于语义的捕获和表征,展现了很高的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值