Skip to content

Release 0.7.0

Compare
Choose a tag to compare
@josh146 josh146 released this 19 Nov 05:50
· 3403 commits to master since this release
b11abe6

New features since last release

  • Custom padding constant in AmplitudeEmbedding is supported (see 'Breaking changes'.) #419

  • StronglyEntanglingLayer and RandomLayer now work with a single wire. #409 #413

  • Added support for applying the inverse of an Operation within a circuit. #377

  • Added an OperationRecorder() context manager, that allows templates and quantum functions to be executed while recording events. The recorder can be used with and without QNodes as a debugging utility. #388

  • Operations can now specify a decomposition that is used when the desired operation is not supported on the target device. #396

  • The ability to load circuits from external frameworks as templates has been added via the new qml.load() function. This feature requires plugin support --- this initial release provides support for Qiskit circuits and QASM files when pennylane-qiskit is installed, via the functions qml.from_qiskit and qml.from_qasm. #418

  • An experimental tensor network device has been added #416 #395 #394 #380

  • An experimental tensor network device which uses TensorFlow for backpropagation has been added #427

  • Custom padding constant in AmplitudeEmbedding is supported (see 'Breaking changes'.) #419

Breaking changes

  • The pad parameter in `AmplitudeEmbedding()is now eitherNone`` (no automatic padding), or a number that is used as the padding constant. #419

  • Initialization functions now return a single array of weights per function. Utilities for multi-weight templates Interferometer() and CVNeuralNetLayers() are provided. #412

  • The single layer templates RandomLayer(), CVNeuralNetLayer() and StronglyEntanglingLayer() have been turned into private functions _random_layer(), _cv_neural_net_layer() and _strongly_entangling_layer(). Recommended use is now via the corresponding Layers() templates. #413

Improvements

  • Added extensive input checks in templates. #419

  • Templates integration tests are rewritten - now cover keyword/positional argument passing, interfaces and combinations of templates. #409 #419

  • State vector preparation operations in the default.qubit plugin can now be applied to subsets of wires, and are restricted to being the first operation in a circuit. #346

  • The QNode class is split into a hierarchy of simpler classes. #354 #398 #415 #417 #425

  • Added the gates U1, U2 and U3 parametrizing arbitrary unitaries on 1, 2 and 3 qubits and the Toffoli gate to the set of qubit operations. #396

  • Changes have been made to accomodate the movement of the main function in pytest._internal to pytest._internal.main in pip 19.3. #404

  • Added the templates BasisStatePreparation and MottonenStatePreparation that use gates to prepare a basis state and an arbitrary state respectively. #336

  • Added decompositions for BasisState and QubitStateVector based on state preparation templates.
    #414

  • Replaces the pseudo-inverse in the quantum natural gradient optimizer (which can be numerically unstable) with np.linalg.solve. #428

Contributors

This release contains contributions from (in alphabetical order):

Ville Bergholm, Josh Izaac, Nathan Killoran, Angus Lowe, Johannes Jakob Meyer, Oluwatobi Ogunbayo, Maria Schuld, Antal Száva.