Release 0.7.0
New features since last release
-
Custom padding constant in
AmplitudeEmbedding
is supported (see 'Breaking changes'.) #419 -
StronglyEntanglingLayer
andRandomLayer
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 whenpennylane-qiskit
is installed, via the functionsqml.from_qiskit
andqml.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 either
None`` (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()
andCVNeuralNetLayers()
are provided. #412 -
The single layer templates
RandomLayer()
,CVNeuralNetLayer()
andStronglyEntanglingLayer()
have been turned into private functions_random_layer()
,_cv_neural_net_layer()
and_strongly_entangling_layer()
. Recommended use is now via the correspondingLayers()
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
topytest._internal.main
in pip 19.3. #404 -
Added the templates
BasisStatePreparation
andMottonenStatePreparation
that use gates to prepare a basis state and an arbitrary state respectively. #336 -
Added decompositions for
BasisState
andQubitStateVector
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.