Skip to main content

Official Pytorch Library for Tversky Neural Networks

Project description

Official pytorch library for Tversky Neural Networks

Links

Tests Publish to PyPI PyPI - Version

Installation

Note: tversky requires PyTorch ≥ 2.0. Install it first following the instructions at https://pytorch.org/get-started. Then run:

pip install tversky

Notes

  • The code used to reproduce the experiments presented in our ICLR 2026 paper is located in the tversky-networks-iclr2026 repository. This library was forked that repository. That repository does not use this library.

Component: Tversky Similarity Layer

from tversky import nn as tnn

sim_layer = tnn.TverskySimilarity(
    embedding_dim=64,
    fbank_size=128,
    similarity_model='contrast',
    normalize=False
)

Component: Tversky Projection Layer

from tversky import nn as tnn

proj_layer = tnn.TverskyProjection(
    embedding_dim=64,
    class_count=10,
    fbank_size=128,
    similarity_model='contrast',
    normalize=False
)

MNIST Example

Example of neural network that employs Tversky projection to model MNIST.

import torch
import torch.nn as nn
import torch.nn.functional as F

from tversky import nn as tnn

class MnistNet(nn.Module):
    def __init__(self, fbank_size: int):
        super().__init__()

        self.conv1 = nn.Conv2d(1, 12, 3, padding="same")
        self.conv2 = nn.Conv2d(12, 12, 3, padding="same")
        self.pool2 = nn.MaxPool2d(2)

        self.conv3 = nn.Conv2d(12, 12, 3, padding="same")
        self.conv4 = nn.Conv2d(12, 12, 3, padding="same")
        self.pool4 = nn.MaxPool2d(2)

        self.conv5 = nn.Conv2d(12, 12, 3, padding="same")
        self.conv6 = nn.Conv2d(12, 36, 3, padding="same")

        self.tproj  = tnn.TverskyProjection(
            embedding_dim=36,
            class_count=10,
            fbank_size=fbank_size,
            similarity_model="contrast",
            intersection_reduction="product", 
            difference_reduction="ignorematch",
            normalize=False,
        )

    def forward_conv(self, x):
        x = self.conv2(F.relu(self.conv1(x)))
        x = self.pool2(x)

        x = self.conv4(F.relu(self.conv3(x)))
        x = self.pool4(x)

        x = self.conv6(F.relu(self.conv5(x)))
        x = x.mean((-2, -1))

        return x

    def forward(self, x):
        x = self.forward_conv(x)
        return self.tproj(x)
    
    def compute_salience(self, x):
        x = self.forward_conv(x)
        feature_measures = x @ self.tproj.feature_bank.weight.T
        salience_measures = F.relu(feature_measures).sum(-1)
        return salience_measures

Notes:

License

LICENSE.txt

Citation

If you use this work, please cite the following paper:

@inproceedings{doumbouya2026tversky,
    title={Tversky Neural Networks: Psychologically Plausible Deep Learning with Differentiable Tversky Similarity},
    author={Moussa Koulako Bala Doumbouya and Dan Jurafsky and Christopher D Manning},
    booktitle={The Fourteenth International Conference on Learning Representations},
    year={2026},
    url={https://openreview.net/forum?id=koKWoKaMrE}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tversky-0.2.1.tar.gz (510.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tversky-0.2.1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file tversky-0.2.1.tar.gz.

File metadata

  • Download URL: tversky-0.2.1.tar.gz
  • Upload date:
  • Size: 510.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tversky-0.2.1.tar.gz
Algorithm Hash digest
SHA256 917e3f2c2739853d8c20b838644a85475f364adb1e0e9fd2cca7f33b7b7bb6d0
MD5 b6f11399f0026a5edaddd9e2be8c0262
BLAKE2b-256 71eba0751e740a3b6c53f7f21b6cc73fa70b51ee727b64198fc47e6cac5eb80e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tversky-0.2.1.tar.gz:

Publisher: pypi.yml on mdoumbouya/tversky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tversky-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: tversky-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tversky-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 685de7f2c17e0d0eab5dc90a30e49a96691200091b8709a60a7901fb1787ce6f
MD5 6657becab3b49f0706b23f0d0401e349
BLAKE2b-256 11cd620e838dbd1fb3b7e15dfa10ea0debf9235ac5eb1034cf965e8f119f9b0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tversky-0.2.1-py3-none-any.whl:

Publisher: pypi.yml on mdoumbouya/tversky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page