Generate samples using the C++ noisy trajectory simulator.
tfq.noise.samples(
programs, symbol_names, symbol_values, num_samples
)
Simulate the final state of programs
given symbol_values
are placed
inside of the symbols with the name in symbol_names
in each circuit.
Channels in this simulation will be "tossed" to a certain realization
during simulation. After each simulation is a run a single bitstring
will be drawn. These simulations are repeated num_samples
times.
# Sample a noisy circuit with C++.
qubit = cirq.GridQubit(0, 0)
my_symbol = sympy.Symbol('alpha')
my_circuit_tensor = tfq.convert_to_tensor([
cirq.Circuit(
cirq.X(qubit) ** my_symbol,
cirq.depolarize(0.01)(qubit)
)
])
my_values = np.array([[0.123]])
my_num_samples = np.array([100])
# This op can now be run with:
output = tfq.noise.samples(
my_circuit_tensor, ['alpha'], my_values, my_num_samples)
output
<tf.RaggedTensor [[[0], [0], [1], [0], [0], [0], [0], [1], [0], [0]]]>
Args |
programs
|
tf.Tensor of strings with shape [batch_size] containing
the string representations of the circuits to be executed.
|
symbol_names
|
tf.Tensor of strings with shape [n_params], which
is used to specify the order in which the values in
symbol_values should be placed inside of the circuits in
programs .
|
symbol_values
|
tf.Tensor of real numbers with shape
[batch_size, n_params] specifying parameter values to resolve
into the circuits specified by programs, following the ordering
dictated by symbol_names .
|
num_samples
|
tf.Tensor with one element indicating the number of
samples to draw for all circuits in the batch.
|
Returns |
A tf.Tensor containing the samples taken from each circuit in
programs .
|