paddle_quantum.dataset
数据集的功能实现。
- class Dataset
 基类:
object所有数据集的基类,集成了多种量子编码方法。
- data2circuit(classical_data, encoding, num_qubits, can_describe_dimension, split_circuit, return_state: bool, is_image=False)
 将输入的经典数据
classical_data用编码方式encoding编码成量子态,这里的经典数据经过了截断或者补零,因而可以正好被编码。- 参数:
 classical_data (list) – 待编码的向量,经过了截断或者补零,刚好可以被编码。
encoding (str) – 编码方式,参见 MNIST 编码注释。
num_qubits (int) – 量子比特数目。
can_describe_dimension (int) –
encoding编码方式可以编码的数目。split_circuit (bool) – 是否切分电路。
return_state (bool) – 是否返回量子态。
is_image (bool, optional) – 是否是图片,如果是图片,归一化方法不同。
- 抛出:
 Exception – 暂不支持返回 amplitude encoding 的电路。
- 返回:
 如果
return_state == True,返回编码后的量子态,否则返回编码的电路。- 返回类型:
 list
- filter_class(x, y, classes, data_num, need_relabel, seed=0)
 将输入的
x,y按照classes给出的类别进行筛选,数目为data_num。- 参数:
 x (Union[list, np.ndarray]) – 样本的特征。
y (Union[list, np.ndarray]) – 样本标签。
classes (list) – 需要筛选的类别。
data_num (int) – 筛选出来的样本数目。
need_relabel (bool) – 将原有类别按照顺序重新标记为 0、1、2 等新的名字,比如传入
[1,2], 重新标记之后变为[0,1]主要用于二分类。seed (int, optional) – 随机种子,默认为
0。
- 返回:
 包含如下元素:
new_x: 筛选出的特征
new_y: 对应于 new_x 的标签
- 返回类型:
 Tuple[list]
- class VisionDataset(figure_size)
 基类:
paddle_quantum.dataset.Dataset图片数据集类,通过继承 VisionDataset 类,用户可以快速生成自己的图片量子数据。
- 参数:
 figure_size (int) – 图片大小,也就是长和高的数值。
- encode(feature, encoding, num_qubits, split_circuit, downscaling_method='resize', target_dimension=-1, return_state=True, full_return=False)
 将
feature编码到num_qubits量子比特中,再降维到target_dimension后使用encoding。feature是一维的图像向量。- 参数:
 feature (Union[list, np.ndarray]) – 一维图片向量组成的list/ndarray。
encoding (str) –
angle_encoding表示角度编码,一个量子比特编码一个旋转门;amplitude_encoding表示振幅编码;pauli_rotation_encoding表示SU(3)的角度编码; 还有linear_entangled_encoding,real_entangled_encoding,complex_entangled_encoding和IQP_encoding编码。num_qubits (int) – 编码后的量子比特数目。
split_circuit (bool, optional) – 是否需要切分电路。除了振幅之外的所有电路都会存在堆叠的情况,如果选择
True就将块与块分开,默认为False。downscaling_method (str, optional) – 包括
PCA和resize, 默认为resize。target_dimension (int, optional) – 降维之后的尺度大小,如果是
PCA,不能超过图片大小;如果是resize,不能超过原图大小,默认为-1。return_state (bool, optional) – 是否返回量子态,如果是
False返回量子电路,默认为True。full_return (bool, optional) – 是否返回原始图像, 经典图像矢量, 量子态和量子电路, 默认为
False。
- 抛出:
 Exception – PCA维度应小于图片大小。
Exception – 调整大小的尺寸应该是一个平方数。
Exception – 缩小尺寸的方法只能是 resize 和 PCA。
Exception – 无效的编码方法。
- 返回:
 包含如下元素:
quantum_image_states: 量子态,只有
full_return==True或者return_state==True的时候会返回。quantum_image_circuits: 所有特征编码的电路,只有
full_return==False或者return_state==True的时候会返回。图片经过类别过滤,但是还没有降维、补零的特征,是一个一维向量(可以 reshape 成图片),只有
return_state==True的时候会返回。经过类别过滤和降维、补零等操作之后的特征,并未编码为量子态,只有
return_state==True的时候会返回。
- 返回类型:
 Tuple[paddle.Tensor, list, np.ndarray, np.ndarray]
- class MNIST(mode, encoding, num_qubits, classes, data_num=-1, split_circuit=False, downscaling_method='resize', target_dimension=-1, need_cropping=True, need_relabel=True, return_state=True, seed=0)
 基类:
paddle_quantum.dataset.VisionDatasetMNIST 数据集,它继承了 VisionDataset 图片数据集类。
- 参数:
 mode (str) – 数据模式,包括
train和test。encoding (str) –
angle_encoding表示角度编码,一个量子比特编码一个旋转门;amplitude_encoding表示振幅编码;pauli_rotation_encoding表示SU(3)的角度编码; 还有linear_entangled_encoding,real_entangled_encoding,complex_entangled_encoding和IQP_encoding编码。num_qubits (int) – 编码后的量子比特数目。
classes (list) – 用列表给出需要的类别,类别用数字标签表示。
data_num (int, optional) – 使用的数据量大小, 默认为
-1。split_circuit (bool, optional) – 是否需要切分电路。除了振幅之外的所有电路都会存在堆叠的情况,如果选择
True就将块与块分开。downscaling_method (str, optional) – 包括
PCA和resize。默认为resize。target_dimension (int, optional) – 降维之后的尺度大小,如果是
PCA,不能超过图片大小;如果是resize,不能超过原图大小。need_cropping (bool, optional) – 是否需要裁边,如果为
True,则从image[0:27][0:27]裁剪为image[4:24][4:24]。need_relabel (bool, optional) – 将原有类别按照顺序重新标记为 0, 1, 2 等新的名字,比如传入
[1,2],重新标记之后变为[0,1],主要用于二分类。return_state (bool, optional) – 是否返回量子态,如果是
False返回量子电路。seed (int, optional) – 筛选样本的随机种子,默认为
0。
- 抛出:
 Exception – 数据模式只能为训练和测试。
- class FashionMNIST(mode, encoding, num_qubits, classes, data_num=-1, split_circuit=False, downscaling_method, target_dimension=-1, need_relabel=True, return_state=True, seed=0)
 基类:
paddle_quantum.dataset.VisionDatasetFashionMNIST 数据集,它继承了
VisionDataset图片数据集类。- 参数:
 mode (str) – 数据模式,包括
train和test。encoding (str) –
angle_encoding表示角度编码,一个量子比特编码一个旋转门;amplitude_encoding表示振幅编码;pauli_rotation_encoding表示SU(3)的角度编码; 还有linear_entangled_encoding,real_entangled_encoding,complex_entangled_encoding和IQP_encoding编码。num_qubits (int) – 编码后的量子比特数目。
classes (list) – 用列表给出需要的类别,类别用数字标签表示。
data_num (int, optional) – 使用的数据量大小,默认为
-1。split_circuit (bool, optional) – 是否需要切分电路。除了振幅之外的所有电路都会存在堆叠的情况,如果选择
True就将块与块分开, 默认为False。downscaling_method (str, optional) – 包括
PCA和resize,默认为resize。target_dimension (int, optional) – 降维之后的尺度大小,如果是
PCA,不能超过图片大小;如果是resize,不能超过原图大小, 默认为-1。need_relabel (bool, optional) – 将原有类别按照顺序重新标记为 0, 1, 2 等新的名字,比如传入
[1,2],重新标记之后变为[0,1],主要用于二分类, 默认为True。return_state (bool, optional) – 是否返回量子态,如果是
False返回量子电路, 默认为True。seed (int, optional) – 筛选样本的随机种子,默认为
0。
- 抛出:
 Exception – 数据模式只能为训练和测试。
- class SimpleDataset(dimension)
 基类:
paddle_quantum.dataset.Dataset用于不需要降维的简单分类数据。用户可以通过继承
SimpleDataset,将自己的分类数据变为量子态。下面的几个属性也会被继承。- 参数:
 dimension (int) – 编码数据的维度。
- encode(feature, encoding, num_qubits, return_state=True, full_return=False)
 用
num_qubits的量子比特对feature进行编码encoding。- 参数:
 feature (Union[list, np.ndarray]) – 编码的特征,每一个分量都是一个 ndarray 的特征向量。
encoding (str) – 编码方法。
num_qubits (int) – 编码的量子比特数目。
return_state (bool, optional) – 是否返回量子态,默认为
True。full_return (bool, optional) – 是否返回原始图像, 经典图像矢量, 量子态和量子电路, 默认为
False。
- 抛出:
 Exception – 无效特征类型。
Exception – 无效编码方式。
Exception – 量子比特数不足。
- 返回:
 包含如下元素:
quantum_states: 量子态,只有
full_return==True或者return_state==True的时候会返回。quantum_circuits: 所有特征编码的电路,只有
full_return==False或者return_state==True的时候会返回。origin_feature: 经过类别过滤之后的所有特征,并未编码为量子态,只有
return_state==True的时候会返回。feature:
origin_feature经过了补零之后的特征,quantum_states就是将feature编码之后的结果。 只有return_state==True的时候会返回。
- 返回类型:
 Tuple[np.ndarray, list, np.ndarray, np.ndarray]
- class Iris(encoding: str, num_qubits: int, classes: list, test_rate: float = 0.2, need_relabel=True, return_state=True, seed=0)
 基类:
paddle_quantum.dataset.SimpleDatasetIris 数据集。
- 参数:
 encoding (str) –
angle_encoding表示角度编码,一个量子比特编码一个旋转门;amplitude_encoding表示振幅编码;pauli_rotation_encoding表示SU(3)的角度编码; 还有linear_entangled_encoding,real_entangled_encoding,complex_entangled_encoding和IQP_encoding编码。num_qubits (int) – 量子比特数目。
classes (list) – 用列表给出需要的类别,类别用数字标签表示。
test_rate (float, optional) – 测试集的占比, 默认为
0.2。need_relabel (bool, optional) – 将原有类别按照顺序重标记为 0、1、2 等新的名字,比如传入 [1,2] ,重标记之后变为 [0,1] ,主要用于二分类。默认为
True。return_state (bool, optional) – 是否返回量子态,默认为
True。seed (int, optional) – 筛选样本的随机种子,默认为
0。
- class BreastCancer(encoding, num_qubits, test_rate=0.2, return_state=True, seed=0)
 基类:
paddle_quantum.dataset.SimpleDatasetBreastCancer 数据集。
- 参数:
 encoding (_type_) –
angle_encoding表示角度编码,一个量子比特编码一个旋转门;amplitude_encoding表示振幅编码;pauli_rotation_encoding表示SU(3)的角度编码; 还有linear_entangled_encoding,real_entangled_encoding,complex_entangled_encoding和IQP_encoding编码。num_qubits (_type_) – 量子比特数目。
test_rate (float, optional) – 测试集的占比, 默认为
0.2。return_state (bool, optional) – 是否返回量子态,默认为
True。seed (int, optional) – 筛选样本的随机种子,默认为
0。