Bert实战:使用Bert实现文本分类。

注:模型的类型在configuration_bert.py中查看。选择合适的模型很重要,比如这次是中文文本的分类。选择用bert-base-uncased只能得到86%的准确率,但是选用bert-base-chinese就可以轻松达到96%。

image-20211025192732926

4、修改bert_cnews.py代码

===============================================================================

对68行的代码做修改。原始代码如下:

ALL_MODELS = sum((tuple(conf.pretrained_config_archive_map.keys()) for conf in (BertConfig, XLNetConfig, XLMConfig,

RobertaConfig, DistilBertConfig)), ())

修改为:

ALL_MODELS=tuple(BERT_PRETRAINED_CONFIG_ARCHIVE_MAP)

作者想把BertConfig、XLNetConfig、XLMConfig、RobertaConfig, DistilBertConfig等都导进来。可能是版本的升级pretrained_config_archive_map这个字段做了修改,以Bert为例,这个字段改为了‘BERT_PRETRAINED_CONFIG_ARCHIVE_MAP’。本次案例只是对Bert的讲解,所以我只保留了Bert的字段。

image-20211022154646619

5、修改main()方法中的参数。

data_dir:数据集的路径,改为“./cnews”。

parser.add_argument(“–data_dir”, default=‘./cnews’, type=str, required=False,

help=“The input data dir. Should contain the .tsv files (or other data files) for the task.”)

model_type:模型的类型,MODEL_CLASSES的参数,本次使用bert。

parser.add_argument(“–model_type”, default=‘bert’, type=str, required=False,

help="Model type selected in the list: " + ", ".join(MODEL_CLASSES.keys()))

model_name_or_path:预训练模型的存放路径,设置为‘chinese_wwm_pytorch’。

parser.add_argument(“–model_name_or_path”, default=‘chinese_wwm_pytorch’, type=str, required=False,

help="Path to pre-trained model or shortcut name selected in the list: " + ", ".join(

ALL_MODELS))

这个文件下面的文件详见下图:

image-20211025190808637

task_name:任务名称。我写的cnews

parser.add_argument(“–task_name”, default=‘cnews’, type=str, required=False,

help="The name of the task to train selected in the list: " + ", ".join(processors.keys()))

do_train:是否训练。需要训练则设置为true。

parser.add_argument(“–do_train”, default=True,action=‘store_true’,

help=“Whether to run training.”)

do_eval:是否验证,如果设置为true,则将outs的模型一一验证。和do_train可以同时配置为true,这样训练完成后就开始验证。

parser.add_argument(“–do_eval”,default=True, action=‘store_true’,

help=“Whether to run eval on the dev set.”)

evaluate_during_training:是否在训练期间验证。默认没有配置。如果需要配置,则将其设置为true。

parser.add_argument(“–evaluate_during_training”, action=‘store_true’,

help=“Rul evaluation during training at each logging step.”)

do_lower_case:是否转小写。使用uncased模型时需要设置。

parser.add_argument(“–do_lower_case”,action=‘store_true’,

help=“Set this flag if you are using an uncased model.”)

per_gpu_train_batch_size和per_gpu_eval_batch_size:batch_size大小,根据显卡合理设置。

parser.add_argument(“–per_gpu_train_batch_size”, default=4, type=int,

help=“Batch size per GPU/CPU for training.”)

parser.add_argument(“–per_gpu_eval_batch_size”, default=4, type=int,

help=“Batch size per GPU/CPU for evaluation.”)

learning_rate:学习率,默认设置即可。

parser.add_argument(“–learning_rate”, default=2e-5, type=float,

help=“The initial learning rate for Adam.”)

parser.add_argument(“–weight_decay”, default=0.0, type=float,

num_train_epochs:epochs大小。

parser.add_argument(“–num_train_epochs”, default=50.0, type=float,

help=“Total number of training epochs to perform.”)

save_steps:迭代多少次保存一次模型。

parser.add_argument(‘–save_steps’, type=int, default=12500,

help=“Save checkpoint every X updates steps.”)

上面的参数是比较重要的参数,将这些参数配置好可以训练了。

5、验证

===============================================================

验证还有一步要做,config.json、tokenizer.json、tokenizer_config.json、vocab.txt。复制一份到outs文件夹。

image-20211025193518055

等训练完成就可以测试了。
image-20211025194457936

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值