paddle_quantum.qml.qcaan
量子电路关联对抗网络(Quantum-Circuit Associative Adversarial Network, QCAAN)模型
- Data_Load()
加载 MNIST 数据集
- 返回:
MNIST 数据集
- 返回类型:
paddle.vision.datasets.MNIST
- class ConvBlock(shape, in_channels, out_channels, kernel_size=3, stride=1, padding=1, activation=None, normalize=True)
基类:
paddle.nn.Layer
建立神经网络的卷积块。 每一个卷积块包含若干卷积层、Silu 激活层、层归一化层;并且卷积块保持空间维度不变,即图片的宽和高不变,只改变通道数。
- 参数:
shape (List[int]) – 层归一化的形状
in_channels (int) – 输入通道数
out_channels (int) – 输出通道数
kernel_size (int) – 卷积核的大小
stride (int) – stride 的规模
padding (int) – padding 的规模
activation (nn.Layer) – 激活函数
normalize (bool) – 指示是否使用层归一化的标记
- forward(x)
前向执行函数
- 参数:
x (paddle.Tensor) – 输入张量
- 返回:
输出张量
- 返回类型:
paddle.Tensor
- class Generator(latent_dim=16)
基类:
paddle.nn.Layer
生成器网络
- 参数:
latent_dim (int) – 隐藏特征维度
- forward(x)
前向执行函数
- 参数:
x (paddle.Tensor) – 输入张量
- 返回:
输出张量
- 返回类型:
paddle.Tensor
- class Discriminator(latent_dim=16)
基类:
paddle.nn.Layer
判别器网络
- 参数:
latent_dim (int) – 隐藏特征维度
- forward(x)
前向执行函数
- 参数:
x (paddle.Tensor) – 输入张量
- 返回:
输出张量
- 返回类型:
paddle.Tensor
- generate_pauli_string_list(num_qubits, num_terms)
生成测量量子态所需要的可观测量。
- 参数:
num_qubits (int) – 量子比特的数量。
num_terms (int) – 生成的可观测量的项数。
- 返回:
返回生成的可观测量。
- 返回类型:
List[list]
- class QCBM(num_qubits, num_depths, latent_dim=16)
基类:
paddle.nn.Layer
量子玻尔兹曼机,这里即等价于量子神经网络。
- 参数:
num_qubits (int) – 量子比特的数量。
num_depths (int) – complex entangled layers 的层数
latent_dim (int) – 隐藏特征维度
- forward()
前向执行函数
- 返回:
输出在一系列哈密顿量上的观测值,即在 Z0, Z1, …, X0, X1, …, Y0, Y1, …
- 返回类型:
paddle.Tensor
- prior_sampling(expec_obs, batch_size)
模拟从 QCBM 中采样先验概率的过程。
- 参数:
expec_obs (paddle.Tensor) – 一系列观测值组成的向量,长度等于隐藏特征维度
batch_size (int) – 一个 batch 中的样本数
- 返回:
采样结果,值在 {-1, 1}中。
- 返回类型:
paddle.Tensor
- train(num_qubits=8, num_depths=4, lr_qnn=0.005, batch_size=128, latent_dim=16, epochs=21, lr_g=0.0002, lr_d=0.0002, beta1=0.5, beta2=0.9, manual_seed=888)
训练 QCAAN 模型的函数。
- 参数:
num_qubits (int) – 量子电路所包含的量子比特的数量。
num_depths (int) – complex entangled layers 的层数。
lr_qnn (paddle.float32) – 更新QNN中参数的学习率。
batch_size (int) – 每一步迭代中的批大小。
latent_dim (int) – 隐藏特征维度。
epochs (int) – 训练模型需要的 epoch 数目。
lr_g (paddle.float32) – 更新生成器的学习率。
lr_d (paddle.float32) – 更新判别器的学习率。
beta1 (paddle.float32) – 用于生成器和判别器的Adam 中的 beta1 参数。
beta2 (paddle.float32) – 用于生成器和判别器的Adam 中的 beta2 参数。
manual_seed (int) – 用于可复现的人工种子。
- model_test(latent_dim=16, params_path='params', num_qubits=8, num_depths=4, manual_seed=20230313)
加载训练好的 QCAAN 模型参数,生成一些新图。最后存储这些图片。
- 参数:
latent_dim (int) – 隐藏特征维度
params_path (str) – 加载模型参数的路径。
num_qubits (int) – 量子电路所包含的量子比特的数量。
num_depths (int) – complex entangled layers 的层数。
manual_seed (int) – 用于可复现的人工种子。