注:模型的类型在configuration_bert.py中查看。选择合适的模型很重要,比如这次是中文文本的分类。选择用bert-base-uncased只能得到86%的准确率,但是选用bert-base-chinese就可以轻松达到96%。
===============================================================================
对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的字段。
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))
这个文件下面的文件详见下图:
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.”)
上面的参数是比较重要的参数,将这些参数配置好可以训练了。
===============================================================
验证还有一步要做,config.json、tokenizer.json、tokenizer_config.json、vocab.txt。复制一份到outs文件夹。
等训练完成就可以测试了。