【发布时间】:2020-12-12 09:49:32
【问题描述】:
我正在 TensorFlow Quantum (TFQ) 上运行一些示例和测试,并且正在努力执行多类分类。我将使用 MNIST 分类示例作为基础 (https://www.tensorflow.org/quantum/tutorials/mnist),因为这也是我的起点。
对于二元分类,我使用了不同的类示例和不同的门组合,分类结果是通过测量单个读出的 qubit (qR) 结果获得的,因此如果 qR=0,我们将分类为 0 类,如果 qR= 1 然后我们有第 1 课。
我将它扩展到多类问题,所以我们有 4 个类 (0,1,2,3)。为此,我使用tf.keras.utils.to_categorical(y_train) 更改类的标签,以便标签从单个值转换为向量 (0 -> (1,0,0,0); 1-> (0,1,0, 0); etc..),使用tf.keras.losses.CategoricalHinge() 作为模型的损失并创建 4 个读数量子位,每个类一个 (M(qR0, qR1, qR2, qR3) = (0,0,1,0) -> 2 类),这行得通。
但是,这种方法会大大增加电路的尺寸。所以我想要做的是只将 2 个读出 qubits 传递给 TFQ,并使用 4 类分类的组合测量值(|00> = 0,|10> = 1,|01> = 2,|11> = 3) .理想情况下,这将允许 2^n 多类分类,其中 n 是量子比特的数量。在 Cirq 中,我可以通过在两个读出量子位上执行 cirq.measure(qR0, qR1, key='measure') 来实现此输出。但是,我在将此类命令传递给 TFQ 时遇到了困难,因为据我了解,它仅测量以单个量子比特 Pauli 门结尾的量子比特。
那么,我在 TFQ 的功能中是否缺少允许在训练过程中进行此类测量的功能?
【问题讨论】:
标签: tensorflow multiclass-classification quantum-computing tensorflow-quantum cirq