Skip to content

How do you define multiqubit noise channels and noisy training? #686

Open

Description

@L-P-B

Hi there,

Sorry for the noob question.

Is is possible to define multi qubit noise channels and use tfq to do noisy training?

My work flow is similar to that of the tutorials with noise, but instead I'm trying to define the channel

cirq.asymmetric_depolarize(error_probabilities={'XX': 0.1})

This throws errors which vanish upon removing this channel.

Thanks!

Max

Activity

  1. RubensZimbres commented on Aug 17, 2022

    @RubensZimbres

    Hi, I'm also learning and I had the same problem, testing a neural network on a noisy circuit. This is what worked for me, using tfq.layers.NoisyControlledPQC:

    controller = tf.keras.Sequential([
        tf.keras.layers.Dense(10, activation='elu'),
        tf.keras.layers.Dense(2)
    ])
    
    circuits_input = tf.keras.Input(shape=(),
                                    # The circuit-tensor has dtype `tf.string` 
                                    dtype=tf.string,
                                    name='circuits_input')
    
    commands_input = tf.keras.Input(shape=(1,),
                                    dtype=tf.dtypes.float32,
                                    name='commands_input')
    
    dense_2 = controller(commands_input)
    
    expectation_layer = tfq.layers.NoisyControlledPQC(model_circuit.with_noise(cirq.bit_flip(p=0.05)),
                                                 operators = [cirq.Z(qubit),cirq.Z(qubit)],repetitions=5000,sample_based=True)
    
    expectation = expectation_layer([circuits_input, dense_2])
    
    model = tf.keras.Model(inputs=[circuits_input, commands_input],
                           outputs=expectation)
    

    This was the circuit:

    def make_GHZ_withbitflips(num_qubits,measurements=True):
        myqubits = cirq.LineQubit.range(num_qubits)
        GHZ_circuit = cirq.Circuit([
            cirq.Moment([cirq.H(myqubits[0])]),
            cirq.rx(a).on(q0),
            
        cirq.ry(b).on(q1),cirq.ry(a).on(q2), cirq.CNOT(control=q2, target=q3), cirq.CNOT(control=q1, target=q0)
        ])
    
        for x in range(num_qubits-1):
            GHZ_circuit.append([cirq.CNOT(myqubits[x],myqubits[x+1]),cirq.bit_flip(p=0.1)(myqubits[x+1])])
    
        if measurements:
            GHZ_circuit.append(cirq.Moment(cirq.measure_each(*myqubits)))
        return GHZ_circuit
    
    model_circuit=make_GHZ_withbitflips(5)
    
  2. added
    kind/questionFurther information is requested
    kind/bug-reportSomething doesn't seem to work
    and removed
    kind/questionFurther information is requested
    on Dec 1, 2024
  3. added theissue type on Aug 29, 2025
  4. removed theissue type on Aug 31, 2025
  5. added a commit that references this issue on Mar 19, 2026
    34c3596
  6. added
    priority/reviewReassess the priority of this item at the next opportunity
    on Jun 5, 2026
  7. added theissue type on Jun 6, 2026
  8. changed the title [-]Multi qubit noise channels and noisy training. [/-] [+]How do you define multiqubit noise channels and noisy training?[/+] on Jun 6, 2026
  9. added
    kind/questionFurther information is requested
    and removed
    kind/bug-reportSomething doesn't seem to work
    on Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/questionFurther information is requestedpriority/reviewReassess the priority of this item at the next opportunity

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions