Releases: ChitambarLab/qNetVO
v0.4.4
Non-Breaking Changes
* The Pennylane dependency was updated to the most recent version (v0.37)
- Docs dependencies on
m2r2
were removed and replaced withsphinx-mdinclude
- The sphinx build action was removed from the project's github action workflows due to sphinx being v2 rather than v8. A custom docs build command using the most recent sphinx version was used instead.
- All qnetvo issues related to this update were resolved.
v0.4.3
- Added Demos for training quantum networking protocols using classical and quantum communications
- Added support for
qml.AdamOptimizer
inqnetvo.gradient_descent
- Fixed bug in
qnetvo.behavior_fn
where multiple layers were not handled properly.
v0.4.2
Updates:
- PennyLane has been upgraded to the most recent version (v0.29.1)
Non-breaking changes:
- Flaky unit test failures are rerun on failure for stability
- File-IO functionality broken in v0.3 release is fixed so that optimization dictionaries can be written and read from json.
v0.4.1
In this release we add a few new utilities and ansatzes.
state_vec_fn
: constructs a function that obtains the vector representation of a quantum state output from a circuit.density_mat_fn
: constructs a function that obtains the density matrix representation of a quantum state output from a circuit.W_state
: Initializes the 3-qubit W statenonmax_entangled_state
: initializes a GHZ-like state that is nonmaximally entangled.shared_coin_flip_state
: generates a mixed state that mimics the a biased coinflip shared between multiple parties.graph_state_fn
: generates a circuit that initializes a pre-specified graph state.
v0.4.0
In this release we are pleased to announce that local operations and classical communication (LOCC) is now supported by qNetVO simulation and variational optimization software. This new functionality allows users to implement and optimize protocols such as teleportation, entanglement swapping, entanglement distillation, and many more!
Our new features allow for CCSender
nodes to measure a quantum state and broadcast the classical result. A CCReceiver
node can then receive the broadcast and use the classical information to condition an input. The midcircuit measurements and conditioned operations are implemented from trainable unitary circuits.
Modifications:
- Restructured network node class hierarchy and introduce
CCSender
and CCReceiver` network nodes. - Added support for classical communication within the
NetworkAnsatz
class is considered. - Update qNetVO to use the most recent version of PennyLane (v0.28.0)
Breaking Changes:
Minor breaking changes are incorporated in this release. In particular, the attributes of the NetworkAnsatz
.
More generally, we observe that the parallelized gradient evaluation available for the CHSH and nlocal star/chain cost functions becomes flaky in PennyLane v0.28. If utilizing the parallel gradient evaluation methods, consider using qNetVO v0.3.0 and PennyLane v0.27.0 for improved stability.
v0.3.0
New Features
- Processing Nodes: Networks can now have an arbitrary numbers of node layers. The first layer contains
PrepareNodes
, the final layer containsMeasureNodes
, and intermediate layers contain eitherNoiseNodes
orProcessingNodes
. - Cost functions were updated to handle arbitrary numbers of layers.
- PennyLane is updated to current version 0.27.
Breaking Changes
- for the
NetworkAnsatz
constructor, the positional argumentnoise_nodes
can no longer go behind the measurement node layer. All nodes, must be passed toNetworkAnsatz
as positional arguments in the appropriate ordering. The last set of nodes must be a measurement layer, however, the remaining layers are generic. - Networks with noise nodes no longer use
"default.mixed"
automatically. All devices must be specified manually using thedev_kwargs
keyword argument for theNetworkAnsatz
constructor. - All supported cost functions are updated to handle processing nodes, which changed the behavior of a few cost function constructors:
- For the
shannon_entropy_cost_fn
method all nodes are passed input 0 explicitly. - In the
mutual_info_cost_fn
thestatic_layer
argument is removed where the mutual information is evaluated for all inputs and outputs.
- For the
Release v0.2.0: Updating to PennyLane v0.26
Breaking Changes
- Network settings are now stored in a 1D list rather than the nested ragged array structure used previously. As part of this change,
requires_grad
can be set individually for each network parameter. As a result, there is no longer a need for thestatic_settings
attribute to be set at the node level. Instead, fixed or static settings are specified when creating settings with therand_network_settings
and similar functions.
v0.1.4
Features:
shannon_entropy_cost_fn
: optimize shannon entropy in network- added
__version__
attribute to qnetvo package
v0.1.3
Fixing import bug.
v0.1.2
Updating PennyLane to v0.22