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