Skip to main content

Argus is a lightweight library for training neural networks in PyTorch.

Project description

argus-logo

PyPI version Documentation Status Test CodeFactor codecov Downloads

Argus is a lightweight library for training neural networks in PyTorch.

Documentation

https://pytorch-argus.readthedocs.io

Installation

Requirements:

  • torch>=1.1.0

From pip:

pip install pytorch-argus

From source:

pip install -U git+https://github.com/lRomul/argus.git

Example

Simple image classification example with create_model from pytorch-image-models:

from torchvision.datasets import MNIST
from torch.utils.data import DataLoader
from torchvision.transforms import Compose, ToTensor, Normalize

import timm

import argus
from argus.callbacks import MonitorCheckpoint, EarlyStopping, ReduceLROnPlateau


def get_data_loaders(batch_size):
    data_transform = Compose([ToTensor(), Normalize((0.1307,), (0.3081,))])
    train_mnist_dataset = MNIST(download=True, root="mnist_data",
                                transform=data_transform, train=True)
    val_mnist_dataset = MNIST(download=False, root="mnist_data",
                              transform=data_transform, train=False)
    train_loader = DataLoader(train_mnist_dataset,
                              batch_size=batch_size, shuffle=True)
    val_loader = DataLoader(val_mnist_dataset,
                            batch_size=batch_size * 2, shuffle=False)
    return train_loader, val_loader


class TimmModel(argus.Model):
    nn_module = timm.create_model


if __name__ == "__main__":
    train_loader, val_loader = get_data_loaders(batch_size=256)

    params = {
        'nn_module': {
            'model_name': 'tf_efficientnet_b0_ns',
            'pretrained': False,
            'num_classes': 10,
            'in_chans': 1,
            'drop_rate': 0.2,
            'drop_path_rate': 0.2
        },
        'optimizer': ('Adam', {'lr': 0.01}),
        'loss': 'CrossEntropyLoss',
        'device': 'cuda'
    }

    model = TimmModel(params)

    callbacks = [
        MonitorCheckpoint(dir_path='mnist', monitor='val_accuracy', max_saves=3),
        EarlyStopping(monitor='val_accuracy', patience=9),
        ReduceLROnPlateau(monitor='val_accuracy', factor=0.5, patience=3)
    ]

    model.fit(train_loader,
              val_loader=val_loader,
              num_epochs=50,
              metrics=['accuracy'],
              callbacks=callbacks,
              metrics_on_train=True)

More examples you can find here.

Why this name, Argus?

The library name is a reference to a planet from World of Warcraft. Argus is the original homeworld of the eredar (a race of supremely talented magic-wielders), now located within the Twisting Nether. It was once described as a utopian world whose inhabitants were both vastly intelligent and highly gifted in magic. It has since been twisted by demonic, chaotic energies and became the stronghold and homeworld of the Burning Legion.

Download files

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

Files for pytorch-argus, version 0.2.1
Filename, size File type Python version Upload date Hashes
Filename, size pytorch_argus-0.2.1-py3-none-any.whl (33.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pytorch-argus-0.2.1.tar.gz (28.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page