TENSORCIRCUIT
June 13, 2021 ยท View on GitHub
With TensorNetwork project announced by Google, quantum circuit simulator based on it may gain benefits from swift implementation to auto differentiation abilities.
See tensorcircuit.applications for relevant code on so-call differentiable quantum architecture search.
Baisc Usage
import tensorcircuit as tc
c = tc.Circuit(2)
c.H(0)
c.CNOT(0,1)
print(c.perfect_sampling())
print(c.wavefunction())
print(c.measure(1))
print(c.expectation((tc.gates.z(), [1])))
Runtime behavior changing:
tc.set_backend("tensorflow")
tc.set_dtype("complex128")
tc.set_contractor("greedy")
Auto differentiations with jit (tf and jax supported):
@tc.backend.jit
def forward(theta):
c = tc.Circuit(2)
c.R(0, theta=theta, alpha=0.5, phi=0.8)
return tc.backend.real(c.expectation((tc.gates.z(), [0])))
g = tc.backend.grad(forward)
g = tc.backend.jit(g)
theta = tc.gates.num_to_tensor(1.0)
print(g(theta))
DQAS
For application of Differentiable Quantum Architecture Search, see applications. Reference paper: https://arxiv.org/pdf/2010.08561.pdf.
VQNHE
For application of Variational Quantum-Neural Hybrid Eigensolver, see applications. Reference paper: https://arxiv.org/pdf/2106.05105.pdf.