TensorFlow Quantum Release 0.4.0 includes several new features, bug fixes and some breaking changes.
**New Features/Improvement**:
Added `tfq.datasets.tfi_chain` downloadable dataset.
Added `tfq.datasets.xxz_chain` downloadable dataset.
Performance improvement across all ops with improved parallelization in circuit parsing.
Improved `np.float32` and `np.float64` reliability when serializing circuits.
Updated circuit simulation parallelization scheme. When circuits are less than 25 qubits each unique circuit gets 1 thread. Otherwise all threads are used for each individual circuit.
Reduced memory overhead of `tfq.get_sampling_op()`.
Moved to depending on oss qsim (https://github.com/quantumlib/qsim).
Removed last of stray Eigen3 dependencies.
Added `tfq.enable_low_latency_op_mode` to block graph level parallelism (useful when hitting real devices or in memory/compute limited scenarios).
Added adjoint differentiation, capable of analytic differentiation with thousands of symbols and better runtime complexity than methods like SGDifferentiator and ParameterShift.
Added Rotosolve optimizer for use as a black box optimizer with quantum circuits.
Added `tfq.math` ops with the first op featured being `inner_product`.
**Bug Fixes**:
Fixed certain invalid inputs in all underlying ops causing SIGSEGV instead of raising tf.invalidargumenterrors.
**Breaking changes**:
Removed SGDifferentiator (Performance improvements and large rewrite needed).
TensorFlow dependency is now required to be 2.3.1.
Cirq dependency is now required to be Cirq 0.9.1.
Pinned Sympy dependency to 1.5, until now we allowed flexibility with whatever the Cirq requirements were.
Windows builds will not be provided for this release (We do have hopes to add them back in later versions).
A big thanks to all of our contributors for this version:
zaqqwerty , SachinCompton , therooler , jaeyoo , vinitX , yuanoook , tiancheng2000 , MarkDaoust , lamberta , MichaelBroughton , kristenrq .