wesselb / neuralprocesses

A framework for composing Neural Processes in Python

Home Page:https://wesselb.github.io/neuralprocesses

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Neural Processes

CI Coverage Status Latest Docs Code style: black

A framework for composing Neural Processes in Python.

Installation

pip install neuralprocesses tensorflow tensorflow-probability  # For use with TensorFlow
pip install neuralprocesses torch                              # For use with PyTorch

If something is not working or unclear, please feel free to open an issue.

Documentation

See here.

TL;DR! Just Get me Started!

Here you go:

import torch

import neuralprocesses.torch as nps

# Construct a ConvCNP.
convcnp = nps.construct_convgnp(dim_x=1, dim_y=2, likelihood="het")

# Construct optimiser.
opt = torch.optim.Adam(convcnp.parameters(), 1e-3)

# Training: optimise the model for 32 batches.
for _ in range(32):
    # Sample a batch of new context and target sets. Replace this with your data. The
    # shapes are `(batch_size, dimensionality, num_data)`.
    xc = torch.randn(16, 1, 10)  # Context inputs
    yc = torch.randn(16, 2, 10)  # Context outputs
    xt = torch.randn(16, 1, 15)  # Target inputs
    yt = torch.randn(16, 2, 15)  # Target output

    # Compute the loss and update the model parameters.
    loss = -torch.mean(nps.loglik(convcnp, xc, yc, xt, yt, normalise=True))
    opt.zero_grad(set_to_none=True)
    loss.backward()
    opt.step()

# Testing: make some predictions.
mean, var, noiseless_samples, noisy_samples = nps.predict(
    convcnp,
    torch.randn(16, 1, 10),  # Context inputs
    torch.randn(16, 2, 10),  # Context outputs
    torch.randn(16, 1, 15),  # Target inputs
)

About

A framework for composing Neural Processes in Python

https://wesselb.github.io/neuralprocesses

License:MIT License


Languages

Language:Python 94.4%Language:Jupyter Notebook 5.6%Language:Makefile 0.1%