paddle_quantum.qml.bert_qtc

BERT-量子时序卷积(Quantum Temporal Convolution, QTC)模型

class QuantumTemporalConvolution(num_filter, kernel_size, circuit_depth, padding)

基类:paddle.nn.Layer

量子时序卷积(Quantum Temporal Convolution, QTC)模型的实现。具体细节可以参考:https://arxiv.org/abs/2203.03550

参数:
  • num_filter (int) – 量子时序卷积核的数量。

  • kernel_size (int) – 量子时序卷积的卷积核大小,它也是对应的量子神经网络所包含的量子比特数量。

  • circuit_depth (int) – 量子神经网络中的电路模板的层数。

  • padding (int) – 序列的填充的长度。如果它是 int 型数据,表示左右两端各填充对应长度的值。如果是list类型,则应该是 [pad_left, pad_right],表示左边填充多少、右边填充多少。

forward(bert_feature)

模型的前向执行函数。

参数:

bert_feature (paddle.Tensor) – 模型的输入,它是由 BERT 模型对输入文本提取得到的特征。

返回:

量子时序卷积网络提取得到的特征。

返回类型:

paddle.Tensor

class Decoder(num_filter, kernel_size, circuit_depth, padding, num_classes, hidden_size)

基类:paddle.nn.Layer

BERT-QTC 模型的解码器模块。它包含量子时序卷积层、全局最大池化层和线性层。

参数:
  • num_filter (int) – 量子时序卷积核的数量。

  • kernel_size (int) – 量子时序卷积的卷积核大小,它也是对应的量子神经网络所包含的量子比特数量。

  • circuit_depth (int) – 量子神经网络中的电路模板的层数。

  • padding (int) – 序列的填充的长度。如果它是 int 型数据,表示左右两端各填充对应长度的值。如果是list类型,则应该是 [pad_left, pad_right],表示左边填充多少、右边填充多少。

  • num_classes (int) – 模型所要分类的类别的数量。

  • hidden_size (int) – BERT 模型的隐层状态的向量维数。

forward(bert_feature)

模型的前向执行函数。

参数:

bert_feature (paddle.Tensor) – 模型的输入,它是由 BERT 模型对输入文本提取得到的特征。

返回:

模型的预测结果,即对各个类别的概率分数。

返回类型:

paddle.Tensor

class BERTQTC(bert_model, decoder)

基类:paddle.nn.Layer

BERT-QTC 模型。它包含 BERT 预训练模型和解码器模块。

具体细节可以参考 https://arxiv.org/abs/2203.03550

参数:
  • bert_model (str) – 预训练的 BERT 模型。

  • decoder (paddle.nn.Layer) – 解码器模块。

forward(token_ids)

模型的前向执行函数。

参数:

token_ids (paddle.Tensor) – 模型的输入,它是文本令牌化后的数字表示。

返回:

模型的预测结果,即对各个类别的概率分数。

返回类型:

paddle.Tensor

class TextDataset(file_path, bert_model)

基类:paddle.io.Dataset

实现文本数据集的类。

参数:
  • file_path (str) – 数据集的文件路径。其里面应该由多行组成。每一行包含文本标签,由制表符或空格分开。

  • bert_model (str) – 预训练的 BERT 模型,用于构建其对应的令牌器(tokenizer)。

train(num_filter, kernel_size, circuit_depth, padding, num_classes, model_name, dataset, batch_size, num_epochs, bert_model, hidden_size, learning_rate, saved_dir, using_validation, early_stopping)

训练 BERT-QTC 模型的函数。

参数:
  • num_filter (int) – 量子时序卷积核的数量。

  • kernel_size (int) – 量子时序卷积的卷积核大小,它也是对应的量子神经网络所包含的量子比特数量。

  • circuit_depth (int) – 量子神经网络中的电路模板的层数。

  • padding (int) – 序列的填充的长度。如果它是 int 型数据,表示左右两端各填充对应长度的值。如果是list类型,则应该是 [pad_left, pad_right],表示左边填充多少、右边填充多少。

  • num_classes (int) – 模型所要分类的类别的数量。

  • model_name (str) – 模型的名字,用于作为保存的模型参数的文件名。

  • dataset (str) – 模型的名字,用于作为保存的模型参数的文件名。

  • batch_size (int) – 数据的批大小。

  • num_epochs (int) – 训练的轮数。

  • bert_model (str) – 预训练的 BERT 模型,默认为 bert-base-chinese ,即官方的 BERT 中文预训练模型。

  • hidden_size (int) – BERT 模型的隐层状态的向量维数,默认为 768

  • learning_rate (float) – 更新参数的学习率,默认为 0.01

  • saved_dir (str) – 训练得到的模型文件的保存路径,默认使用当前目录。

  • using_validation (bool) – 是否使用验证集。默认为 False ,即不包含验证集。

  • early_stopping (int) – 默认为 1000 ,即如果模型在 1000 次迭代中,在验证集上的 loss 没有提升,则会自动停止训练。

evaluate(model, data_loader)

对模型进行评估。

参数:
  • model (paddle.nn.Layer) – 训练得到的模型,用于被评估。

  • data_loader (DataLoader) – 用于评估模型的数据加载器。

返回:

返回模型在输入数据上的平均的损失值和平均准确率。

返回类型:

Tuple[float, float]

test(model, model_path, test_loader)

使用测试集对模型进行测试。

参数:
  • model (paddle.nn.Layer) – 训练得到的模型,用于被评估。

  • model_path (str) – 保存的模型参数的文件路径。

  • test_loader (DataLoader) – 测试集的数据加载器。

inference(text, model_path, classes, num_filter, kernel_size, circuit_depth, padding, bert_model, hidden_size)

推理函数。使用训练好的模型对输入的图片进行预测。

参数:
  • text (str) – 要预测的文本内容。

  • model_path (str) – 保存的模型参数的文件路径。

  • classes (List[str]) – 要预测的文本的类别。

  • num_filter (int) – 量子时序卷积核的数量。

  • kernel_size (int) – 量子时序卷积的卷积核大小,它也是对应的量子神经网络所包含的量子比特数量。

  • circuit_depth (int) – 量子神经网络中的电路模板的层数。

  • padding (int) – 序列的填充的长度。如果它是 int 型数据,表示左右两端各填充对应长度的值。如果是list类型,则应该是 [pad_left, pad_right],表示左边填充多少、右边填充多少。

  • bert_model (str) – 预训练的 BERT 模型,默认为 bert-base-chinese ,即官方的 BERT 中文预训练模型。

  • hidden_size – BERT 模型的隐层状态的向量维数,默认为 768

返回:

返回模型预测的类别。

返回类型:

str