问题标签 [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.
python - \_tfq_simulate_ops.so 导入 tensorflow_quantum 时未找到
尝试导入与 tensorflow_quantum 相关的初始库:
tensorflow - 无法使用 save/pickle 保存 tensorrflow keras 量子模型
如何保存张量流量子模型?当我尝试使用量子电路保存 keras 模型时,我得到以下信息。我没有找到任何支持。tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数 tensorflow:Layer add_circuit_2 传递了不可序列化的关键字参数
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 也没有。
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。如果是这种情况,我要么处于优化环境的不幸部分,全局最小值不对应于损失环境的最小值,要么损失值被错误地确定。这是我接下来要研究的。
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 值进行比较?
quantum-computing - 如何训练输出状态向量的 TensorFlow Quantum 模型?
我想使用顺序模型在 TFQ 中训练一个简单的电路,如下所示:
但是,我不想执行读取操作,而是希望模型输出状态向量,以便在将其输入损失函数之前对其进行一些后处理。
原则上,tfq.layers.State 看起来适合这项任务,但从示例中我不清楚我将如何在模型上下文中使用状态层,而不是仅使用它来生成状态向量,如图所示文档:
所以我的问题:
- 我可以强制 PQC 层输出状态向量而不是执行读出操作吗?
- 我可以将状态层用作序列模型中的参数化层(或以任何其他方式训练它吗?)
- 或者我的模型是否有任何替代方式输出状态向量?
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 的功能中是否缺少一些允许在训练过程中进行此类测量的功能?
tensorflow2.0 - 关于tensorflow量子中量子神经网络的输入
我用tensorflow量子创建了一个量子神经网络,它的输入是一个由电路转换的张量。关于这个输入电路,我发现如果电路的参数也是用张量指定的,那么量子神经网络是无法训练的。
使用正常参数时的电路可以使网络正常训练
但是当我使用以下代码时,无法训练量子神经网络
** disciminator_network **
python - ModuleNotFoundError:没有名为“tensorflow_quantum”的模块
我正在使用 Python 3.8(64 位)
基本上,我尝试了互联网上所有可能的解决方案,比如更新 python 版本和 tensorflow 版本等。
但是当我尝试这样做时:
终端总是说:
有人对这个问题有任何想法吗?干杯
windows - TensorFlow 量子需要 Manylinux2010。是否有一种解决方法可以让 Tensorflow 量子在 Windows 操作系统上运行?
我在 Windows 操作系统上安装 tensorflow 量子时遇到问题,目前正在让它在 Linux 子系统上运行。是否有任何解决方法可以让它在 Windows 上运行?Protobuf 版本不能同时为 3.8 和 3.12 版本以满足安装要求。