Skip to main content

polytorch

PyPI - Version testing badge coverage badge docs badge black badge

Embeddings and loss functions for different data types.

Installation

Install using pip:

pip install polytorch

Or install the latest version from GitHub:

pip install git+https://github.com/rbturnbull/polytorch.git

Data Types

This package allow you to input and output different data types in PyTorch models.

Binary Data

from polytorch import BinaryData

binary_data = BinaryData()

# Or with labels and colors
binary_data = BinaryData(labels=["no_feature", "with_feature", colors=["red", "blue"])

Categorical Data

from polytorch import CategoricalData

category_count = 5  # Number of categories
categorical_data = CategoricalData(category_count)

# Or with labels, colors and label smoothing
categorical_data = CategoricalData(
    category_count=category_count,
    labels=["cat", "dog", "fish", "bird", "reptile"],
    colors=["red", "blue", "green", "yellow", "purple"],
    label_smoothing=0.1,
)

Ordinal Data

from polytorch import OrdinalData

ordinal_data = OrdinalData()

# Or with color
ordinal_data = OrdinalData(color="pink")

Continuous Data

from polytorch import ContinuousData

continuous_data = ContinuousData()

# Or with color
continuous_data = ContinuousData(color="orange")

Hierarchical Data

from polytorch import HierarchicalData
from hiearchicalsoftmax import SoftmaxNode

root = SoftmaxNode("root")
child1 = SoftmaxNode("child1", parent=root)
child2 = SoftmaxNode("child2", parent=root)
tip1 = SoftmaxNode("tip1", parent=child1)
tip2 = SoftmaxNode("tip2", parent=child1)
tip3 = SoftmaxNode("tip3", parent=child2)
tip4 = SoftmaxNode("tip4", parent=child2)


hierarchical_data = HierarchicalData(root)

Embedding your data

from torch import nn
from polytorch import Embedding

class MyModule(nn.Module):
    def __init__(self, embedding_size:int=128):
        super(MyModule, self).__init__()

        input_types = [binary_data, categorical_data] # for example. Could be other data types as well.
        self.embedding = PolyEmbedding( input_types=input_types, embedding_size=embedding_size)

        # Other modules
        ...

    def forward(self, x_binary, x_categorical):

        embedded = self.embedding( x_binary, x_categorical )

        # Use the embedded features in your model
        ...

Outputting your data

You can also get your model to output to different data types.

from torch import nn
from polytorch import PolyLazyLinear

output_types = [
    CategoricalData(category_count=5, loss_weighting=0.5),  # For example, a categorical output with 5 categories
    BinaryData(loss_weighting=1.0),                        # A binary output
    ContinuousData(loss_weighting=0.1)                     # A continuous output
]

class MyModule(nn.Module):
    def __init__(self, output_types):
        super(MyModule, self).__init__()

        self.output = PolyLazyLinear(output_types=output_types)

    def forward(self, x):
        # Your model logic
        ...

        # Output to different data types
        return self.output(x)

Then add set this as the loss:

from polytorch import PolyLoss

loss_module = PolyLoss(output_types=output_types)

# In your training loop
loss = loss_module(predictions, categorical_target, binary_target, continuous_target)

Credits

Robert Turnbull For more information contact: <robert.turnbull@unimelb.edu.au>

Created using torchapp (https://github.com/rbturnbull/torchapp).

Metadata

Release files for PolyTorch 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PolyTorch 0.1.4
File Size Uploaded
polytorch-0.1.4.tar.gz 14.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PolyTorch 0.1.4
File Interpreter ABI Platform
polytorch-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 30.6 kB

Release files / polytorch-0.1.4.tar.gz

Download URL polytorch-0.1.4.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
084b0e70865c5c6baa06cf0e89775a30dcbd235141f7697ff01bd2e8c3804d40
BLAKE2b-256 checksum
How to use checksums
079e6d7412d385fe6a9c46ec9c4d4920fc94d712c932513161e3bf6cdf44de11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.1 Darwin/24.5.0

Release files / polytorch-0.1.4-py3-none-any.whl

Download URL polytorch-0.1.4-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f8490a0993100983dfc04201b06e0bc005ca94708ac2068bdc23539082e1385
BLAKE2b-256 checksum
How to use checksums
d5ce7de4290dbdef9beed296785147bdca339a9c09392895e009ec530c76b4e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.1 Darwin/24.5.0

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page