我正在 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);等),tf.keras.losses.CategoricalHinge()
用作模型的损失并创建 4 个读数量子位,每个类别一个(M(qR0, qR1, qR2, qR3) = (0,0,1,0) -> class 2),并且这个作品。
然而,这种方法大大增加了电路的尺寸。所以我想要做的是只将 2 个读出量子位传递给 TFQ,并将组合测量用于 4 类分类(|00> = 0,|10> = 1,|01> = 2,|11> = 3) . 理想情况下,这将允许 2^n 多类分类,其中 n 是量子比特的数量。cirq.measure(qR0, qR1, key='measure')
在 Cirq 中,我可以通过对两个读出量子位执行 a 来实现此输出。但是,我在将此类命令传递给 TFQ 时遇到了困难,因为据我了解,它仅测量以单个量子比特 Pauli 门结尾的量子比特。
那么,我在 TFQ 的功能中是否缺少一些允许在训练过程中进行此类测量的功能?