Skip to content
A scikit-learn compatible neural network library that wraps pytorch
Branch: master
Clone or download
Latest commit 5b9b8b7 Apr 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Add button logo Apr 9, 2019
docs DEP Fix installation issues Apr 23, 2019
examples Feature: quick CLIs (#390) Dec 13, 2018
notebooks [MRG] Update transform learning to use class in NeutralNet.__init__ (#… Jan 21, 2019
scripts Do not fix PyTorch version in deploy script Dec 17, 2018
skorch Move criterion to compute device automatically (#455) Apr 15, 2019
.coveragerc Rename inferno to skorch. Oct 10, 2017
.gitignore DOC: Updates seg tutorial to use freezer (#359) Oct 16, 2018
.travis.yml Update dev requirements to include fire package. (#415) Jan 4, 2019
CHANGES.md Move criterion to compute device automatically (#455) Apr 15, 2019
Dockerfile WIP: Update to 0.4.1 (#298) Aug 1, 2018
LICENSE Create LICENSE Oct 16, 2017
MANIFEST.in Fix/include requirements in manifest (#413) Dec 17, 2018
README.rst DEP Fix installation issues Apr 23, 2019
VERSION Mark master as 0.5.1a0 Feb 7, 2019
environment.yml DEP Fix installation issues Apr 23, 2019
pylintrc Satisfy pylint (#252) Jun 22, 2018
requirements-dev.txt Update dev requirements to include fire package. (#415) Jan 4, 2019
requirements.txt
setup.cfg Convert README from md to rst for pypi, add MANIFEST. Oct 11, 2017
setup.py Attempt to merge setup dependencies (#408) Dec 13, 2018

README.rst


Build Status Test Coverage Documentation Status Powered by

A scikit-learn compatible neural network library that wraps PyTorch.

Resources

Examples

To see more elaborate examples, look here.

import numpy as np
from sklearn.datasets import make_classification
from torch import nn
import torch.nn.functional as F

from skorch import NeuralNetClassifier


X, y = make_classification(1000, 20, n_informative=10, random_state=0)
X = X.astype(np.float32)
y = y.astype(np.int64)

class MyModule(nn.Module):
    def __init__(self, num_units=10, nonlin=F.relu):
        super(MyModule, self).__init__()

        self.dense0 = nn.Linear(20, num_units)
        self.nonlin = nonlin
        self.dropout = nn.Dropout(0.5)
        self.dense1 = nn.Linear(num_units, 10)
        self.output = nn.Linear(10, 2)

    def forward(self, X, **kwargs):
        X = self.nonlin(self.dense0(X))
        X = self.dropout(X)
        X = F.relu(self.dense1(X))
        X = F.softmax(self.output(X), dim=-1)
        return X


net = NeuralNetClassifier(
    MyModule,
    max_epochs=10,
    lr=0.1,
    # Shuffle training data on each epoch
    iterator_train__shuffle=True,
)

net.fit(X, y)
y_proba = net.predict_proba(X)

In an sklearn Pipeline:

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler


pipe = Pipeline([
    ('scale', StandardScaler()),
    ('net', net),
])

pipe.fit(X, y)
y_proba = pipe.predict_proba(X)

With grid search

from sklearn.model_selection import GridSearchCV


params = {
    'lr': [0.01, 0.02],
    'max_epochs': [10, 20],
    'module__num_units': [10, 20],
}
gs = GridSearchCV(net, params, refit=False, cv=3, scoring='accuracy')

gs.fit(X, y)
print(gs.best_score_, gs.best_params_)

skorch also provides many convenient features, among others:

Installation

skorch requires Python 3.5 or higher.

pip installation

To install with pip, run:

pip install -U skorch

We recommend to use a virtual environment for this.

From source

If you would like to use the must recent additions to skorch or help development, you should install skorch from source.

Using conda

You need a working conda installation. Get the correct miniconda for your system from here.

If you just want to use skorch, use:

git clone https://github.com/dnouri/skorch.git
cd skorch
conda env create
source activate skorch
# install pytorch version for your system (see below)
python setup.py install

If you want to help developing, run:

git clone https://github.com/dnouri/skorch.git
cd skorch
conda env create
source activate skorch
# install pytorch version for your system (see below)
conda install -c conda-forge --file requirements-dev.txt
python setup.py develop

py.test  # unit tests
pylint skorch  # static code checks

Using pip

If you just want to use skorch, use:

git clone https://github.com/dnouri/skorch.git
cd skorch
# create and activate a virtual environment
pip install -r requirements.txt
# install pytorch version for your system (see below)
python setup.py install

If you want to help developing, run:

git clone https://github.com/dnouri/skorch.git
cd skorch
# create and activate a virtual environment
pip install -r requirements.txt
# install pytorch version for your system (see below)
pip install -r requirements-dev.txt
python setup.py develop

py.test  # unit tests
pylint skorch  # static code checks

PyTorch

PyTorch is not covered by the dependencies, since the PyTorch version you need is dependent on your system. For installation instructions for PyTorch, visit the PyTorch website.

In general, this should work (assuming CUDA 9):

# using conda:
conda install pytorch -c pytorch
# using pip
pip install torch

Communication

You can’t perform that action at this time.