Skip to main content

PyTorch convolutional layers with global context conditioning

Project description

ContextualConv  

PyPI version CI Docs License: GPL v3

ContextualConv – PyTorch convolutional layers with global context conditioning: per‑channel bias, scale, or FiLM‑style scale + bias.


🚀 Quick start

from contextual_conv import ContextualConv2d
import torch

# FiLM‑style (scale + bias)
conv = ContextualConv2d(
    in_channels=16,
    out_channels=32,
    kernel_size=3,
    padding=1,
    context_dim=10,   # size of global vector c
    h_dim=64,         # optional MLP hidden dim
    use_scale=True,   # γ(c)
    use_bias=True     # β(c)
)

x = torch.randn(8, 16, 32, 32)  # feature map
c = torch.randn(8, 10)          # context vector

out = conv(x, c)  # shape: (8, 32, 32, 32)

Modes at a glance

use_scale use_bias Behaviour
False True Contextual bias (original behaviour)
True False Per‑channel scale only
True True FiLM – scale and bias

If both flags are False, the constructor raises ValueError.


🔧 Key features

  • ⚙️ Drop‑in replacement for nn.Conv1d / nn.Conv2d
    → Same arguments + optional context options.
  • 🧠 Global vector conditioning via learnable γ(c) and/or β(c).
  • 🪶 Lightweight – one small MLP (or single Linear) per layer.
  • 🧑‍🔬 FiLM ready – reproduce Feature‑wise Linear Modulation with two lines.
  • 🧩 Modular – combine with any architecture, works on CPU / GPU.
  • ✅ Unit‑tested and documented.

📦 Installation

pip install contextual-conv  # version 0.3.0 on PyPI

Or install from source:

git clone https://github.com/abbassix/ContextualConv.git
cd ContextualConv
pip install -e .[dev]

📐 Context vector details

  • Shape: (B, context_dim)
    (one global descriptor per sample – class label embedding, latent code, etc.)
  • Processed by a ContextProcessor:
    • Linear(context_dim, out_dim) (bias‑only / scale‑only)
    • Small MLP if h_dim is set.
  • Output dims:
    • out_channels → bias or scale
    • 2 × out_channels → FiLM (scale + bias)

🧪 Running tests

pytest tests/

📘 Documentation

Full API reference & tutorials: https://contextualconv.readthedocs.io


🤝 Contributing

Bug reports, feature requests, and PRs are welcome! See CONTRIBUTING.md.


📄 License

GNU GPLv3 – see LICENSE file for details.

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

contextual_conv-0.3.1.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

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

contextual_conv-0.3.1-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file contextual_conv-0.3.1.tar.gz.

File metadata

  • Download URL: contextual_conv-0.3.1.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for contextual_conv-0.3.1.tar.gz
Algorithm Hash digest
SHA256 7d2c3d4ef65219d9c6217277ab9ab59e1f6f42392c350d672ec3bb5f4c97be4d
MD5 1bc68bec82fe537a1b968c7434175962
BLAKE2b-256 9507543dcc3f332dcfbb339076e8315b683c54fcb295aa9ad166efc084bc1d12

See more details on using hashes here.

File details

Details for the file contextual_conv-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for contextual_conv-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6eb0eadf895b9a7906f5975f4cd4df037a6898b90e99fc04f5e54fe53fb4911d
MD5 e66624e756e263f0b7da9427db626cc0
BLAKE2b-256 45155ef8046edc4b2a20c5f6c65a62cc1f0233efb3a708471d26ea748fc9f7e6

See more details on using hashes here.

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