Lambeq

Latest version: v0.4.1

Safety actively analyzes 623775 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

0.4.1

Added:

- Support for Python 3.12.
- A new `Sim4Ansatz` based on the paper by Sim et al. (arXiv:1905.10876).
- A new argument in `Trainer.fit` for specifying an `early_stopping_criterion` other than validation loss.
- A new argument `collapse_noun_phrases` in methods of `CCGParser` and `CCGTree` classes (for example, see `CCGParser.sentence2diagram`) that allows the user to maintain noun phrases in the derivation or collapse them into nouns as desired.
- Raised meaningful exception when users try to convert to/from DisCoPy 1.1.0.

Changed:

- An internal refactoring of module `backend.drawing` in view of planned new features.
- Updated random number generation in `TketModel` by using the recommended `numpy.random.default_rnd` method.

Fixed:

- Handling of possible empty ``Bra`` s and ``Ket`` s during conversion from DisCoPy.
- Fixed a bug in JIT compilation of mixed circuit evaluations.

0.4.0

Added:

- A new integrated backend that replaces ``DisCoPy``, which until now was providing the low-level functionality of ``lambeq``. The new backend offers better performance, increased stability, faster training speeds, and a simplified high-level interface to the user. The new backend consists of the following sub-modules:

- ``lambeq.backend.grammar``: Contains the building blocks for creating string diagrams.
- ``lambeq.backend.tensor``: Contains the necessary classes to create tensor diagrams.
- ``lambeq.backend.quantum``: Adds quantum-specific functionality to the backend and provides a circuit simulator based on the [TensorNetwork](https://github.com/google/TensorNetwork) library.
- ``lambeq.backend.pennylane``: Interface with PennyLane.
- ``lambeq.backend.tk``: Inteface with Tket.
- ``lambeq.backend.numerical_backend``: Common interface for numerical backends (such as Numpy, Jax, PyTorch, TensorFlow)
- ``lambeq.backend.drawing``: Contains drawing functionality for diagrams and circuits.

- ``lambeq.BobcatParser``: Added a special case for adjectival conjunction in tree translation.
- ``lambeq.TreeReader``: Diagrams now are created straight from the ``lambeq.CCGTree``.
- ``lambeq.CCGRule`` apply method: Added ``lambeq.CCGRule.apply`` method to class ``lambeq.CCGRule``.

Changed:

- Diagram-level rewriters: Rewrite functions ``remove_cups`` and ``remove_swaps`` are now refactored as diagram-level rewriters, ``lambeq.RemoveCupsRewriter`` and ``lambeq.RemoveSwapsRewriter`` correspondingly.
- Extra whitespace is now ignored in the ``lambeq.Tokeniser``.

Fixed:

- ``lambeq.UnknownWordsRewriteRule``: Fixed rewriting of non-word boxes.

Removed:

- Removed ``CCGTree.to_biclosed_diagram`` and references to ``discopy.biclosed``. Now CCG trees are directly converted into string diagrams, without the extra step of storing the derivation in a biclosed form.
- ``lambeq.CCGRule``: Removed ``replace_cat_result`` and added ``lambeq.CCGRule.resolve``.

0.3.3

This update features contributions from participants in [unitaryHACK 2023](//unitaryhack.dev):
- Two new optimisers:
- The Nelder-Mead optimiser. (credit: [Gopal Dahale](//github.com/CQCL/lambeq/pull/104))
- The Rotosolve optimiser. (credit: [Ahmed Darwish](//github.com/CQCL/lambeq/pull/93))
- A new rewrite rule for handling unknown words. (credit: [WingCode](//github.com/CQCL/lambeq/pull/105))

Many thanks to all who participated.

This update also contains the following changes:

Added:
- `DiagramRewriter` is a new class that rewrites diagrams by looking at the diagram as a whole rather than by using rewrite rules on individual boxes. This includes an example `UnifyCodomainRewriter` which adds an extra box to the end of diagrams to change the output to a specified type. (credit: [A.C.E07](//github.com/CQCL/lambeq/pull/111))
- Added an early stopping mechanism to `Trainer` using the parameter `early_stopping_interval`.

Fixed:
- In `PennyLaneModel`, SymPy symbols are now substituted during the forward pass so that gradients are back-propagated to the original parameters.
- A pickling error that prevented CCG trees produced by `BobcatParser` from being unpickled has been fixed.

0.3.2

Added:
- Support for `DisCoPy` >= 1.1.4 (credit: toumix).
- replaced `discopy.rigid` with `discopy.grammar.pregroup` everywhere.
- replaced `discopy.biclosed` with `discopy.grammar.categorial` everywhere.
- Use `Diagram.decode` to account for the change in contructor signature `Diagram(inside, dom, cod)`.
- updated attribute names that were previously hidden, e.g. `._data` becomes `.data`.
- replaced diagrammatic conjugate with transpose.
- swapped left and right currying.
- dropped support for legacy DisCoPy.
- Added `CCGType` class for utilisation in the `biclosed_type` attribute of `CCGTree`, allowing conversion to and from a discopy categorial object using `CCGType.discopy` and `CCGType.from_discopy` methods.
- `CCGTree`: added reference to the original tree from parsing by introducing a `metadata` field.

Changed:

- Internalised DisCoPy quantum ansätze in lambeq.
- `IQPAnsatz` now ends with a layer of Hadamard gates in the multi-qubit case and the post-selection basis is set to be the computational basis (Pauli Z).

Fixed:

- Fixed a bottleneck during the initialisation of the `PennyLaneModel` caused by the inefficient substitution of Sympy symbols in the circuits.
- Escape special characters in box labels for symbol creation.
- Documentation: fixed broken links to DisCoPy documentation.
- Documentation: enabled sphinxcontrib.jquery extension for Read the Docs theme.
- Fixed disentangling `RealAnsatz` in extend-lambeq tutorial notebook.
- Fixed model loading in PennyLane notebooks.
- Fixed typo `SPSAOptimizer` (credit: Gopal-Dahale)

Removed:

- Removed support for Python 3.8.

0.3.1

Changed:

- Added example and tutorial notebooks to tests.
- Dependencies: pinned the maximum version of Jax and Jaxlib to 0.4.6 to avoid a JIT-compilation error when using the `NumpyModel`.

Fixed:

- Documentation: fixed broken DisCoPy links.
- Fixed PyTorch datatype errors in example and tutorial notebooks.
- Updated custom ansätze in tutorial notebook to match new structure of `CircuitAnsatz` and `TensorAnsatz`.

0.3.0

Added:

- Support for hybrid quantum-classical models using the `PennyLaneModel`. `PennyLane` is a powerful QML library that allows the development of hybrid ML models by hooking numerically determined gradients of parametrised quantum circuits (PQCs) to the autograd modules of ML libraries like PyTorch or TensorFlow.
- Add lambeq-native loss functions `LossFunction` to be used in conjunction with the`QuantumTrainer`. Currently, we support the `CrossEntropyLoss`, `BinaryCrossEntropyLoss`, and the `MSELoss` loss functions.
- Python 3.11 support.
- An extensive NLP-101 tutorial, covering basic definitions, text preprocessing, tokenisation, handling of unknown words, machine learning best practices, text classification, and other concepts.

Changed:

- Improve tensor initialisation in the `PytorchModel`. This enables the training of larger models as all parameters are initialised such that the expected L2 norm of all output vectors is approximately 1. We use a symmetric uniform distribution where the range depends on the output dimension (flow) of each box.
- Improve the fail-safety of the `BobcatParser` model download method by adding hash checks and atomic transactions.
- Use type union expression `|` instead of `Union` in type hints.
- Use `raise from` syntax for better exception handling.
- Update the requirements for the documentation.

Fixed:

- Fixed bug in `SPSAOptimizer` triggered by the usage of masked arrays.
- Fixed test for `NumpyModel` that was failing due to a change in the behaviour of Jax.
- Fixed brittle quote-wrapped strings in error messages.
- Fixed 400 response code during Bobcat model download.
- Fixed bug where `CircuitAnsatz` would add empty discards and postselections to the circuit.

Removed:

- Removed install script due to deprecation.

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.