There are plethora of ways one cloud imagine combining the capabilities of Cirq and TensorFlow. One of possible approach is to let graph edges represent quantum states and let ops represent transformations of the state, such as applying circuits and taking measurements. This approach is known as โState-as-edgesโ architecture. ๐งโ๐ญ

The state-as-edges approach embedding quantum operations in TensorFlow. As in above image Blue nodes are input tensors, arrows are tensors flowing through the graph, and orange nodes are TF Ops transforming the simulated quantum state. ๐งโ๐ Note above architecture is not used in TFQ but rather an alternative which was considered.

This architecture may at first glance seem like an attractive option as it is direct transformation of quantum computation as a dataflow graph.๐จโ๐ป However, this approach is sub-optimal for several reasons.

First, in this architecture, the structure of the circuits being run is static in the computational graph, thus running a different circuits would require the ๐ฉโโ๏ธ different graph (rebuilt). In this approach we have to build circuits at each iterations.

Second, this problem is lack of a clear way to embed such a quantum dataflow graph on a real quantum processor, quantum states remain in quantum ๐ต๏ธโโ ๏ธmemory on the quantum device itself, and the high latency between classical and quantum processors makes sending transformations one-by-one prohibitive.

Lastly, we need to specify gates and measurements within TF. One may tempted to define these directly; however, Cirq already has the necessary tools and objects defined which are most relevant for the near-term quantum ๐งโโ ๏ธcomputing era. Duplicating Cirq functionality in TF would be stupidity. This motivate our core design principles.๐จโ๐