问题标签 [tensorflow-quantum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1075 浏览

python - \_tfq_simulate_ops.so 导入 tensorflow_quantum 时未找到

尝试导入与 tensorflow_quantum 相关的初始库:

0 投票
1 回答
202 浏览

tensorflow - 无法使用 save/pickle 保存 tensorrflow keras 量子模型

如何保存张量流量子模型?当我尝试使用量子电路保存 keras 模型时,我得到以下信息。我没有找到任何支持。tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数

0 投票
1 回答
529 浏览

quantum-computing - 如何在 Cirq/Tensorflow Quantum 中实现受控 Rx?

我正在尝试在 Cirq/Tensorflow Quantum 中实现受控旋转门。

https://cirq.readthedocs.io/en/stable/gates.html上的 readthedocs.io声明:

“可以使用 Gate.controlled() 将门转换为受控版本。通常,这会返回 ControlledGate 的实例。但是,对于某些特殊情况,门的受控版本也是已知门,这将返回“

我已经实施

我收到以下错误:

我将量子比特和符号初始化为:

我确实将电路与各种电路一起使用。

我的问题:如何在 Cirq/Tensorflow Quantum 中正确实施受控 Rx?

PS 我找不到 Google Cirq 的标签

追问:这如何推广到 Controlled Ry 和 Controlled Rz 的类似情况?

对于 Rz,我在https://threeplusone.com/pubs/on_gates.pdf找到了一个门分解,涉及 H.on(q1)、CNOT(q0, q1)、H.on(q2),但这还不是CRz 具有任意角度。我会在 H 之前引入角度吗?

对于 Ry,我还没有找到分解,CRy 也没有。

0 投票
1 回答
113 浏览

optimization - Tensorflow Quantum:PQC 未优化

我遵循了以下教程:https ://www.tensorflow.org/quantum/tutorials/mnist 。我已将本教程修改为我能想到的最简单的示例:一个输入集,其中 x 从 0 线性增加到 1 并且 y = x < 0.3。然后我使用 PQC 和带有符号的单个 Rx 门,以及使用 Z 门的读数。

当检索优化的符号并手动调整它时,我可以很容易地找到一个提供 100% 准确度的值,但是当我让 Adam 优化器运行时,它会收敛到始终预测 1 或始终预测 -1。有人发现我做错了吗?(我很抱歉无法将代码分解为更小的示例)

经过 20 次优化后,我得到以下结果:

这导致正确预测的 1000 个样本中有 700 个样本。在查看映射结果时,这是因为所有结果都被预测为 -1。查看原始结果时,它们从 -0.5484014 线性增加到 -0.99996257。

当使用 w = model.layers[0].get_weights() 检索权重,减去 0.8 并使用 model.layers[0].set_weights(w) 再次设置时,我得到 920/1000 正确。微调这个过程可以让我达到 1000/1000。

更新 1:我还打印了各个时期的权重更新:

我将权重设置为 1.36,该值给出 908/1000(而不是 700/100)。优化器远离它:

我注意到的一件事是铰链精度的值为 0.75,重量为 1.36,高于 2.17 的 0.7。如果是这种情况,我要么处于优化环境的不幸部分,全局最小值不对应于损失环境的最小值,要么损失值被错误地确定。这是我接下来要研究的。

0 投票
1 回答
141 浏览

tensorflow - 如何将 y_true 的值数组映射到单个值,以便与 Tensorflow 损失函数中的 y_pred 进行比较(Tensorflow/Tensorflow Quantum)

我正在尝试实现以下论文第 8 页中列出的电路:https : //arxiv.org/pdf/1905.10876.pdf 使用 Tensorflow Quantum (TFQ)。我之前已经为使用 Qiskit 的电路子集这样做了,最终得到的精度可以在以下论文的第 14 页上找到:https ://arxiv.org/pdf/2003.09887.pdf 。在 TFQ 中,我的准确率下降了很多。我认为这个 delta 的起源是因为在 TFQ 中,我只在第一个量子位上使用了 1 个可观察泡利 Z 算子,并且电路似乎没有将所有知识“转移”到第一个量子位。我把它放在引号中,因为我确信有更好的方法来描述它。另一方面,在 Qiskit 中,16 个状态 (4^2) 被映射到 2 个状态。

我的问题:我怎样才能恢复我的准确性?
可能的答案 a):将所有信息“传输”到单个量子位(可能是辅助量子位)并对该量子位进行读数的某种方法。
可能的答案 b) 在所有量子位(总共 4 个)上放置一个 Pauli Z 可观察对象,将 16 个状态中的一半映射到标签 0,另一半映射到标签 1。我在下面的代码中尝试了这个。

我对答案 b) 的尝试:

我有一个在 Tensorflow 中实现的 Tensorflow Quantum (TFQ) 电路。该电路有多个可观察量,我尝试将它们组合到我的损失函数中。我更喜欢使用尽可能多的标准组件,但需要将我的量子状态映射到标签以确定损失。我认为我想要达到的目标并不是 TFQ 独有的。我通过以下方式定义我的模型:

在 loss_mse(均方误差)中,我收到 y_pred 的 (32, 4) 张量。一排可能看起来像

这必须首先从 [-1,1] 映射到 [0,1] 的二值化版本,因此它看起来像:

现在,需要进行表查找,以判断此组合是 0 还是 1。最后,可以由该行执行常规 (y_true-y_pred)^2,然后对所有行执行 np.sum。我试图实现这一点:

然而,系统似乎仍然期望 (32,4) 张量。我原以为我可以简单地提供一个损失值(浮点数)。我的问题:如何将 y_true 的多个值映射到单个数字,以便与张量流损失函数中的单个 y_pred 值进行比较?

0 投票
1 回答
131 浏览

quantum-computing - 如何训练输出状态向量的 TensorFlow Quantum 模型?

我想使用顺序模型在 TFQ 中训练一个简单的电路,如下所示:

但是,我不想执行读取操作,而是希望模型输出状态向量,以便在将其输入损失函数之前对其进行一些后处理。

原则上,tfq.layers.State 看起来适合这项任务,但从示例中我不清楚我将如何在模型上下文中使用状态层,而不是仅使用它来生成状态向量,如图所示文档:

所以我的问题:

  • 我可以强制 PQC 层输出状态向量而不是执行读出操作吗?
  • 我可以将状态层用作序列模型中的参数化层(或以任何其他方式训练它吗?)
  • 或者我的模型是否有任何替代方式输出状态向量?
0 投票
1 回答
285 浏览

tensorflow - 使用 TensorFlow Quantum 进行多类分类

我正在 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 的功能中是否缺少一些允许在训练过程中进行此类测量的功能?

0 投票
1 回答
78 浏览

tensorflow2.0 - 关于tensorflow量子中量子神经网络的输入

我用tensorflow量子创建了一个量子神经网络,它的输入是一个由电路转换的张量。关于这个输入电路,我发现如果电路的参数也是用张量指定的,那么量子神经网络是无法训练的。

使用正常参数时的电路可以使网络正常训练

但是当我使用以下代码时,无法训练量子神经网络

** disciminator_network **

0 投票
2 回答
844 浏览

python - ModuleNotFoundError:没有名为“tensorflow_quantum”的模块

我正在使用 Python 3.8(64 位)

基本上,我尝试了互联网上所有可能的解决方案,比如更新 python 版本和 tensorflow 版本等。

但是当我尝试这样做时:

终端总是说:

有人对这个问题有任何想法吗?干杯

0 投票
2 回答
390 浏览

windows - TensorFlow 量子需要 Manylinux2010。是否有一种解决方法可以让 Tensorflow 量子在 Windows 操作系统上运行?

我在 Windows 操作系统上安装 tensorflow 量子时遇到问题,目前正在让它在 Linux 子系统上运行。是否有任何解决方法可以让它在 Windows 上运行?Protobuf 版本不能同时为 3.8 和 3.12 版本以满足安装要求。

矛盾的 protobuff 版本

TensorFlow 量子安装指南