【问题标题】:How can I train a TensorFlow Quantum model that outputs a state vector?如何训练输出状态向量的 TensorFlow Quantum 模型?
【发布时间】:2020-11-19 04:20:46
【问题描述】:

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

model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=(), dtype=tf.dtypes.string))
model.add(
    tfq.layers.PQC(
        model_circuit=circuit,
        operators=readout_op))

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

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

state_layer = tfq.layers.State()
alphas = tf.reshape(tf.range(0, 1.1, delta=0.5), (3, 1)) # FIXME: #805
state_layer(parametrized_bell_circuit,
    symbol_names=[alpha], symbol_values=alphas)

所以我的问题:

  • 我可以强制 PQC 层输出状态向量而不是执行读出操作吗?
  • 我可以将 State 层用作 Sequential 模型中的参数化层(或以任何其他方式对其进行训练吗?)
  • 或者有什么替代方法可以让我的模型输出状态向量?

【问题讨论】:

    标签: quantum-computing tensorflow-quantum


    【解决方案1】:

    我可以强制 PQC 层输出状态向量而不是执行读出操作吗?

    PQC 层将为您创建和管理tf.Variables。从那里它将通过tfq.layers.Expectation 层发送您的电路。不幸的是,无法从该层生成完整的状态向量。

    我可以将状态层用作序列模型中的参数化层(或以任何其他方式对其进行训练吗?)

    是的,您可以使用tfq.layers.State 层 (https://www.tensorflow.org/quantum/api_docs/python/tfq/layers/State) 将输入电路的状态向量合并到您的模型中。请注意,生成的状态向量将不可微。在创建 TFQ 时,我们希望鼓励用户进行任何复杂的建模,以尝试利用在真实芯片和仿真之间进行 1:1 转换的功能(即,将tfq.layers.Expectation 逻辑部署到真实芯片上非常容易,因为我们没有违反任何规则,但tfq.layers.State 我们是在作弊并提取完整的状态向量)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      相关资源
      最近更新 更多