Shot-based functions on MPSCircuit #184
-
Currently MPSCircuit does not count with shot-based functions such as I am particularly interested in the MPSCircuit class for noisy circuit simulation, so I can have control over the bond dimension (contrary to Circuit and DMS). Related to this, Circuit and DMS objects have the |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 15 replies
-
try Demo usage: K = tc.set_backend("tensorflow") n = 10 c = tc.MPSCircuit(n) c.set_split_rules({"max_singular_values": 8}) c.h(range(10)) @K.jit def sample(status): return c.measure(*range(n), status=status)[0] r = [] for _ in range(20): r.append(sample(K.implicit_randu([n]))) K.stack(r) |
Beta Was this translation helpful? Give feedback.
-
Nice catch! We should have implemented Demo usage: from tensorcircuit.noisemodel import NoiseConf, circuit_with_noise import numpy as np def sample_with_noise(c, noise_conf, shots, status, statusc=None, **kws): if statusc is None: num_quantum = noise_conf.channel_count(c) statusc = np.random.uniform(size=[shots, num_quantum]) @K.jit def sample(status, statusc): cnoise = circuit_with_noise(c, noise_conf, statusc) # type: ignore return cnoise.sample( batch=1, status=status, format="sample_bin", allow_state=True, **kws ) r = [] for i in range(shots): r.append(sample(status[i], statusc[i])[0]) return K.stack(r) n = 10 c = tc.Circuit(10) c.h(range(n)) noise_conf = NoiseConf() error1 = tc.channels.depolarizingchannel(0.01, 0.01, 0.01) noise_conf.add_noise("h", error1) r = sample_with_noise(c, noise_conf, 32, np.random.uniform(size=[32, 1])) (Actually a slightly generalized implementation from the above is sufficient to PR on the support of Or an integrated example for noisy sampling prior to the Reference code module: https://github.com/tencent-quantum-lab/tensorcircuit/blob/master/tensorcircuit/noisemodel.py |
Beta Was this translation helpful? Give feedback.
try
MPSCircuit.measure()
,sample
API is built as a wrapper formeasure
API which is lacking inMPSCircuit
class for now.Demo usage: