Online Deep Learning for river
Project description
DeepRiver is a Python library for online deep learning. DeepRivers ambition is to enable online machine learning for neural networks. It combines the river API with the capabilities of designing neural networks based on PyTorch.
💈 Installation
pip install river-torch
You can install the latest development version from GitHub as so:
pip install https://github.com/online-ml/river-torch --upgrade
Or, through SSH:
pip install git@github.com:online-ml/river-torch.git --upgrade
🍫 Quickstart
We build the development of neural networks on top of the river API and refer to the rivers design principles. The following example creates a simple MLP architecture based on PyTorch and incrementally predicts and trains on the website phishing dataset. For further examples check out the Documentation.
Classification
>>> from river import datasets
>>> from river import metrics
>>> from river import preprocessing
>>> from river import compose
>>> from river_torch import classification
>>> from torch import nn
>>> from torch import optim
>>> from torch import manual_seed
>>> _ = manual_seed(42)
>>> def build_torch_mlp_classifier(n_features): # build neural architecture
... net = nn.Sequential(
... nn.Linear(n_features, 5),
... nn.Linear(5, 5),
... nn.Linear(5, 5),
... nn.Linear(5, 5),
... nn.Linear(5, 1),
... nn.Sigmoid()
... )
... return net
>>> model = compose.Pipeline(
... preprocessing.StandardScaler(),
... classification.Classifier(build_fn=build_torch_mlp_classifier, loss_fn='bce', optimizer_fn=optim.Adam, learning_rate=1e-3)
... )
>>> dataset = datasets.Phishing()
>>> metric = metrics.Accuracy()
>>> for x, y in dataset:
... y_pred = model.predict_one(x) # make a prediction
... metric = metric.update(y, y_pred) # update the metric
... model = model.learn_one(x, y) # make the model learn
>>> print(f'Accuracy: {metric.get()}')
Accuracy: 0.8304
Anomaly Detection
>>> import math
>>> from river import datasets, metrics
>>> from river_torch.base import AutoencodedAnomalyDetector
>>> from river_torch.utils import get_activation_fn
>>> from torch import manual_seed, nn
>>> _ = manual_seed(42)
>>> def get_encoder(activation_fn="selu", dropout=0.5, n_features=3):
... activation = get_activation_fn(activation_fn)
... encoder = nn.Sequential(
... nn.Dropout(p=dropout),
... nn.Linear(in_features=n_features, out_features=math.ceil(n_features / 2)),
... activation(),
... nn.Linear(in_features=math.ceil(n_features / 2), out_features=math.ceil(n_features / 4)),
... activation(),
... )
... return encoder
>>> def get_decoder(activation_fn="selu", dropout=0.5, n_features=3):
... activation = get_activation_fn(activation_fn)
... decoder = nn.Sequential(
... nn.Linear(in_features=math.ceil(n_features / 4), out_features=math.ceil(n_features / 2)),
... activation(),
... nn.Linear(in_features=math.ceil(n_features / 2), out_features=n_features),
... )
... return decoder
>>> dataset = datasets.CreditCard().take(5000)
>>> metric = metrics.ROCAUC()
>>> encoder_fn = get_encoder
>>> decoder_fn = get_decoder
>>> dataset = datasets.CreditCard().take(5000)
>>> metric = metrics.ROCAUC()
>>> model = AutoencodedAnomalyDetector(encoder_fn=encoder_fn,decoder_fn=decoder_fn, lr=0.01)
>>> for x,y in dataset:
... score = model.score_one(x)
... metric = metric.update(y_true=y, y_pred=score)
... model = model.learn_one(x=x)
🏫 Affiliations
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
Built Distribution
Hashes for river_torch-0.0.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1fde69f4c6dda4169df9b46b59c908061caa99d9d6951cfe976f67ea20e7a74 |
|
MD5 | 2ba74a0e887f89198c7e9c2cbc6683d2 |
|
BLAKE2b-256 | 26b73214c8afa393f769a78ce7c25c9bc1ae564109f6039fa97c0a94d3461499 |