Как я могу обучить квантовую модель TensorFlow, которая выводит вектор состояния?
Я хочу обучить простую схему в TFQ с использованием последовательной модели следующим образом:
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_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 выводить вектор состояния вместо выполнения операции считывания?
- Могу ли я использовать уровень состояния в качестве параметризованного уровня в последовательной модели (или обучить его другим способом?)
- или есть ли альтернативный способ, которым моя модель выводит вектор состояния?
1 ответ
Могу ли я заставить слой PQC выводить вектор состояния вместо выполнения операции считывания?
Уровень PQC будет создавать и управлять tf.Variable
s для вас. Оттуда он отправит ваши схемы через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
обманываем и вытаскиваем полный вектор состояния).