本节学习了在mindspore架构下接入GPT接口实现情感分类。
首先,安装所需要的包。
接下来,导入实验的包与数据(数据分为了训练数据集和测试数据集):
process_dataset 函数接收了一个数据集、一个分词器 , max_seq_len(最大序列长度)、batch_size(批量大小)和 shuffle(是否打乱)。这个函数的目的是通过分词、填充序列并创建数据批次来预处理数据集。
首先,函数检查设备目标是否为 ‘Ascend’(假设代码正在MindSpore平台上运行)。如果是,分词器调用时使用填充=‘max_length’,否则不使用填充;如果 shuffle 参数设置为 True,则数据集以批量大小进行随机打乱;数据集通过 tokenize 函数进行映射,该函数对文本进行分词并返回输入ID和注意力掩码。数据集的输出列设置为 ‘input_ids’ 和 ‘attention_mask’;数据集再次映射,以便将标签转换为MindSpore期望的类型(int32)。
最后,数据集被批处理。如果设备目标为 ‘Ascend’,则使用指定的批量大小进行批处理。如果不是,则使用指定的批量大小进行填充,使用分词器的填充 token id 进行填充。
bos_token:beginning of sequence 标记,通常用于表示一个序列的开始。
eos_token:end of sequence 标记,用于表示一个序列的结束。
pad_token:padding token,用于填充序列,使得所有序列的长度相同,在批处理时非常有用。
首先导入了GPT分类器类和Adam优化器,model加载了GPT模型,并指定了两个类别(num—labels);设置了模型嵌入层大小以包含上面新增的特殊标记。
接下来创建了一个Adam优化器,用于更新模型参数。
Accuracy(),是评估模型准确星的指标。
checkpoint回调函数,用于训练过程中保存模型。
Bestmodelcallback ()定义了最佳模型回调函数,用于验证集上性能最好的模型。
最后创建一个Trainer对象,配制其训练参数。