A Python Package For System Identification Using NARMAX Models

Overview

DOI PyPI version License openissues issuesclosed downloads python status discord contributors forks stars

SysIdentPy is a Python module for System Identification using NARMAX models built on top of numpy and is distributed under the 3-Clause BSD license.

Note

The update v0.1.7 has been released with major changes and additional features (Fourier basis function, NAR and NFIR models, possibility to select the lag of the residues for Extended Least Squares algorithm and many more).

There are several API modifications and you will need to change your code to have the new (and upcoming) features.

Check the examples of how to use the new version in the documentation page.

For more details, please see the changelog.

Documentation

Examples

SysIdentPy now support NARX Neural Network and General estimators, e.g., sklearn estimators and Catboost.

Exemples

from torch import nn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sysidentpy.metrics import mean_squared_error
from sysidentpy.utils.generate_data import get_siso_data


# Generate a dataset of a simulated dynamical system
x_train, x_valid, y_train, y_valid = get_siso_data(n=1000,
                                                   colored_noise=False,
                                                   sigma=0.001,
                                                   train_percentage=80)

Building Polynomial NARX models with FROLS algorithm

from sysidentpy.model_structure_selection import FROLS
from sysidentpy.basis_function import Polynomial
from sysidentpy.utils.display_results import results
from sysidentpy.utils.plotting import plot_residues_correlation, plot_results
from sysidentpy.residues.residues_correlation import compute_residues_autocorrelation
from sysidentpy.residues.residues_correlation import compute_cross_correlation

basis_function=Polynomial(degree=2)
model = PolynomialNarmax(
  order_selection=True,
  n_info_values=10,
  extended_least_squares=False,
  ylag=2, xlag=2,
  info_criteria='aic',
  estimator='least_squares',
  basis_function=basis_function
)
model.fit(X=x_train, y=y_train)
yhat = model.predict(X=x_valid, y=y_valid)
print(rrse)
r = pd.DataFrame(
	results(
		model.final_model, model.theta, model.err,
		model.n_terms, err_precision=8, dtype='sci'
		),
	columns=['Regressors', 'Parameters', 'ERR'])
print(r)
	
Regressors     Parameters        ERR
0        x1(k-2)     0.9000  0.95556574
1         y(k-1)     0.1999  0.04107943
2  x1(k-1)y(k-1)     0.1000  0.00335113

plot_results(y=y_valid, yhat=yhat, n=1000)
ee = compute_residues_autocorrelation(y_valid, yhat)
plot_residues_correlation(data=ee, title="Residues", ylabel="$e^2$")
x1e = compute_cross_correlation(y_valid, yhat, x2_val)
plot_residues_correlation(data=x1e, title="Residues", ylabel="$x_1e$")

polynomial

NARX Neural Network

from sysidentpy.neural_network import NARXNN

class NARX(nn.Module):
    def __init__(self):
        super().__init__()
        self.lin = nn.Linear(4, 10)
        self.lin2 = nn.Linear(10, 10)
        self.lin3 = nn.Linear(10, 1)
        self.tanh = nn.Tanh()

    def forward(self, xb):
        z = self.lin(xb)
        z = self.tanh(z)
        z = self.lin2(z)
        z = self.tanh(z)
        z = self.lin3(z)
        return z

narx_net = NARXNN(net=NARX(),
                  ylag=2,
                  xlag=2,
                  loss_func='mse_loss',
                  optimizer='Adam',
                  epochs=200,
                  verbose=False,
                  optim_params={'betas': (0.9, 0.999), 'eps': 1e-05} # optional parameters of the optimizer
)

train_dl = narx_net.data_transform(x_train, y_train)
valid_dl = narx_net.data_transform(x_valid, y_valid)
narx_net.fit(train_dl, valid_dl)
yhat = narx_net.predict(x_valid, y_valid)
ee, ex, extras, lam = narx_net.residuals(x_valid, y_valid, yhat)
narx_net.plot_result(y_valid, yhat, ee, ex)

neural

Catboost-narx

from sysidentpy.general_estimators import NARX
from catboost import CatBoostRegressor

catboost_narx = NARX(base_estimator=CatBoostRegressor(iterations=300,
                                                      learning_rate=0.1,
                                                      depth=6),
                     xlag=2,
                     ylag=2,
                     fit_params={'verbose': False}
)

catboost_narx.fit(x_train, y_train)
yhat = catboost_narx.predict(x_valid, y_valid)
ee, ex, extras, lam = catboost_narx.residuals(x_valid, y_valid, yhat)
catboost_narx.plot_result(y_valid, yhat, ee, ex)

catboost

Catboost without NARX configuration

The following is the Catboost performance without the NARX configuration.

def plot_results(yvalid, yhat):
    _, ax = plt.subplots(figsize=(14, 8))
    ax.plot(y_valid[:200], label='Data', marker='o')
    ax.plot(yhat[:200], label='Prediction', marker='*')
    ax.set_xlabel("$n$", fontsize=18)
    ax.set_ylabel("$y[n]$", fontsize=18)
    ax.grid()
    ax.legend(fontsize=18)
    plt.show()

catboost = CatBoostRegressor(iterations=300,
                            learning_rate=0.1,
                            depth=6)
catboost.fit(x_train, y_train, verbose=False)
plot_results(y_valid, catboost.predict(x_valid))

catboost

The examples directory has several Jupyter notebooks presenting basic tutorials of how to use the package and some specific applications of sysidentpy. Try it out!

Requirements

SysIdentPy requires:

  • Python (>= 3.6)
  • NumPy (>= 1.5.0) for all numerical algorithms
  • Matplotlib >= 1.5.2 for static plotting and visualizations
  • Pytorch (>=1.7.1) for building feed-forward neural networks
Platform Status
Linux ok
Windows ok
macOS ok

SysIdentPy do not to support Python 2.7.

A few examples require pandas >= 0.18.0. However, it is not required to use sysidentpy.

Installation

The easiest way to get sysidentpy running is to install it using pip

pip install sysidentpy

We will make it available at conda repository as soon as possible.

Changelog

See the changelog for a history of notable changes to SysIdentPy.

Development

We welcome new contributors of all experience levels. The sysidentpy community goals are to be helpful, welcoming, and effective.

Note: we use the pytest package for testing. The test functions are located in tests subdirectories at each folder inside SysIdentPy, which check the validity of the algorithms.

Run the pytest in the respective folder to perform all the tests of the corresponding sub-packages.

Currently, we have around 81% of code coverage.

You can install pytest using

pip install -U pytest

Example of how to run the tests:

Open a terminal emulator of your choice and go to a subdirectory, e.g,

\sysidentpy\metrics\

Just type pytest and you get a result like

========== test session starts ==========

platform linux -- Python 3.7.6, pytest-5.4.2, py-1.8.1, pluggy-0.13.1

rootdir: ~/sysidentpy

plugins: cov-2.8.1

collected 12 items

tests/test_regression.py ............ [100%]

========== 12 passed in 2.45s ==================

You can also see the code coverage using the pytest-cov package. First, install pytest-cov using

pip install pytest-cov

Run the command below in the SysIdentPy root directory, to generate the report.

pytest --cov=.

Important links

Source code

You can check the latest sources with the command::

git clone https://github.com/wilsonrljr/sysidentpy.git

Project History

The project was started by Wilson R. L. Junior, Luan Pascoal and Samir A. M. Martins as a project for System Identification discipline. Samuel joined early in 2019.

The project is actively maintained by Wilson R. L. Junior and looking for contributors.

Communication

Citation

DOI

If you use SysIdentPy on your project, please drop me a line.

If you use SysIdentPy on your scientific publication, we would appreciate citations to the following paper:

  • Lacerda et al., (2020). SysIdentPy: A Python package for System Identification using NARMAX models. Journal of Open Source Software, 5(54), 2384, https://doi.org/10.21105/joss.02384
@article{Lacerda2020,
  doi = {10.21105/joss.02384},
  url = {https://doi.org/10.21105/joss.02384},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {54},
  pages = {2384},
  author = {Wilson Rocha Lacerda Junior and Luan Pascoal Costa da Andrade and Samuel Carlos Pessoa Oliveira and Samir Angelo Milani Martins},
  title = {SysIdentPy: A Python package for System Identification using NARMAX models},
  journal = {Journal of Open Source Software}
}

Inspiration

The documentation and structure (even this section) is openly inspired by sklearn, einsteinpy, and many others as we used (and keep using) them to learn.

Comments
  • Installation Mac M1 chip

    Installation Mac M1 chip

    Greeting, Thank you for this amazing package. I have a Mac 2022 with M1 chip and I failed to install the SysIdentPy. Do you know how to circumvent the problem? Thanks!

    opened by AntoineDubois 5
  • I am unable to resolve  ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    I am unable to resolve ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    Bug: ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    Steps/code to reproduce: from sysidentpy.model_structure_selection import FROLS

    Environment: Version of the packages you are using Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: sysidentpy in ./.local/lib/python3.6/site-packages (0.1.4.2) Requirement already satisfied: torch>=1.7.1 in ./.local/lib/python3.6/site-packages (from sysidentpy) (1.10.0+cu113) Requirement already satisfied: numpy>=1.17.3 in ./.local/lib/python3.6/site-packages (from sysidentpy) (1.19.5) Requirement already satisfied: matplotlib>=3.1.0 in ./.local/lib/python3.6/site-packages (from sysidentpy) (3.3.4) Requirement already satisfied: python-dateutil>=2.1 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (2.8.1) Requirement already satisfied: kiwisolver>=1.0.1 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (1.3.1) Requirement already satisfied: cycler>=0.10 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (0.10.0) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (2.4.7) Requirement already satisfied: pillow>=6.2.0 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (8.4.0) Requirement already satisfied: dataclasses in ./.local/lib/python3.6/site-packages (from torch>=1.7.1->sysidentpy) (0.8) Requirement already satisfied: typing-extensions in ./.local/lib/python3.6/site-packages (from torch>=1.7.1->sysidentpy) (3.7.4.3) Requirement already satisfied: six in ./.local/lib/python3.6/site-packages (from cycler>=0.10->matplotlib>=3.1.0->sysidentpy) (1.15.0)

    opened by TeaCult 4
  • Cannot install the package

    Cannot install the package

    Hello. I am not able to install the package right now.

    Steps/code to reproduce: On the terminal, I am running

    pip install sysidentpy
    

    and I get

    Collecting sysidentpy
      Using cached https://files.pythonhosted.org/packages/b3/9b/20dde4808c7f81badaecd84f112edd161f989b94f1dc84401acda6c49ae2/sysidentpy-0.1.1.tar.gz
        ERROR: Command errored out with exit status 1:
         command: 'c:\users\neylson - a3data\testepython\novoenv\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Neylson - A3Data\\AppData\\Local\\Temp\\pip-install-donew4o8\\sysidentpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\Neylson - A3Data\\AppData\\Local\\Temp\\pip-install-donew4o8\\sysidentpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
             cwd: C:\Users\Neylson - A3Data\AppData\Local\Temp\pip-install-donew4o8\sysidentpy\
        Complete output (1 lines):
        numpy is required during installation
        ----------------------------------------
    ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    

    I am using Python 3.8 in a Windows 10 OS.

    opened by neylsoncrepalde 4
  • It fails for

    It fails for "numpy is required during installation" when we trying to install sysidentpy from requirements.txt.

    Describe the bug It fails for "numpy is required during installation" when we trying to install sysidentpy from requirements.txt.

    To Reproduce

    1. Create a requirements.txt with the below 3 packages: numpy matplotlib sysidentpy
    2. run pip install command pip install -r requirements.txt
    3. Issue appears: image

    Expected results The sysidentpy get installed with all its dependencies.

    Actual results sysidentpy failed to install for error message "numpy is required during installation".

    Environment sysidentpy-0.1.5.3

    Additional context Even if we put the numpy before sysidentpy in requirements.txt does not help. I think this issue is because all the packages are only downloaded in the first pass and then installed all together at the end.

    Workaround We currently have a workaround to pip install all the dependency packages separately before we install for the requirements.txt. But this requires us to do these in a Linux VM as our target server is Linux OS while we are developing in Windows. So it would be great if we could have an actual solution for this issue. Thanks in advance!

    opened by Yangsh-w 3
  • Forecasting with unseen inputs and forecast model generation

    Forecasting with unseen inputs and forecast model generation

    The predict function input arguments are X_valid and y_valid. How can I forecast with my trained model if I don't have output (y_valid) yet?

    Using the simulation function, can it be used for forecasting by directly referencing the trained model regressors?

    The package worked perfectly for my data, and I would like to use it for real-time workflow. This involves training validation-forecasting-updating of the model in real-time.

    As new data is streamed, can I initialize with the previous model and re-regress to update the model's parameters? Thank you very much

    opened by rabiu42000 3
  • Problem using MISO

    Problem using MISO

    Applying the example of article "SysIdentPy: A Python package for System Identificationusing NARMAX models" gives an error. Typing : model = PolynomialNarmax(non_degree=2,order_selection=True,ylag=2, xlag=[[1, 2], [1, 2]],info_criteria='aic', estimator='least_squares',) Gives : -

    TypeError Traceback (most recent call last)

    in () ----> 1 model = PolynomialNarmax(non_degree=2,order_selection=True,ylag=2, xlag=[[1, 2], [1, 2]],info_criteria='aic', estimator='least_squares',)

    2 frames

    /content/gdrive/My Drive/python/03_WP/sysidentpy/base.py in (.0) 116 # create only the lags passed from list 117 x_vec_tmp = [] --> 118 x_vec_tmp.extend([lag + 1000*np.ones(np.size(lag)) for lag in xlag]) 119 x_vec_tmp = np.array(x_vec_tmp) 120 elif isinstance(xlag, int) and n_inputs == 1:

    TypeError: can only concatenate list (not "int") to list

    opened by micheloz 3
  • Example does not run

    Example does not run

    O exemplo extended_least_squares.ipynb falha com esse erro:

    0.5839138626779056
          Regressors Parameters         ERR
    0        x1(k-2)     0.8886  0.74898574
    1         y(k-1)     0.2710  0.06875041
    2  x1(k-1)y(k-1)     0.0924  0.00403020
    3         y(k-2)    -0.0411  0.00143946
    4      x1(k-1)^2    -0.0575  0.00103367
    5   y(k-2)y(k-1)     0.0619  0.00133295
    6  x1(k-1)y(k-2)     0.0477  0.00065670
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    ~/Downloads/sysidentpy/examples/extended_least_squares.ipynb in <module>
         10
         11     model.fit(x_train, y_train)
    ---> 12     parameters[:, i] = list(model.theta)
         13
         14 sns.set()
    
    ValueError: cannot copy sequence with size 7 to array axis with dimension 3
    

    Todos os outros funcionam. Acho que podem adicionar "macOS OK" na lista.

    opened by acristoffers 2
  • Neural NARX - Predicting without labels (forecasting)

    Neural NARX - Predicting without labels (forecasting)

    Is your feature request related to a problem? Please describe. Enhancement of the predict method for Neural NARX in order to access forecasting scenarios where you don't have the labels (y).

    Describe the solution you'd like Be able to use only the 'X_test' as input for the 'predict' method, adding a parameter like 'forecast_horizon' to express the number of steps to predict WITHOUT the actual labels. This is the scenario of a forecasting prediction.

    opened by marcostx 1
  • Exception: Insufficient initial conditions elements!

    Exception: Insufficient initial conditions elements!

    I get this exception when i use model.fit(x_train, y_train, x_valid, y_valid) for MetaMSS same with FROLS. What causes this kind of exception? \sysidentpy\polynomial_basis\narmax.py", line 559, in _model_prediction raise Exception("Insufficient initial conditions elements!")

    opened by rabiu42000 1
  • Too much black text

    Too much black text

    There's too much black (bold) text on

    https://wilsonrljr.github.io/sysidentpy/user_guide.html

    Presumably a problem with the Markdown where a **...** wasn't closed.

    opened by dpsanders 1
  • V0.2.1

    V0.2.1

    v0.2.1

    CONTRIBUTORS

    • wilsonrljr

    CHANGES

    • The update v0.2.1 has been released with additional feature, minor API changes and fixes.

    • MAJOR: Neural NARX now support CUDA

      • Now the user can build Neural NARX models with CUDA support. Just add device='cuda' to use the GPU benefits.
      • Updated docs to show how to use the new feature.
    • MAJOR: New documentation website

      • The documentation is now entirely based on Markdown (no rst anymore).
      • We use MkDocs and Material for MkDocs theme now.
      • Dark theme option.
      • The Contribute page have more details to help those who wants to contribute with SysIdentPy.
      • New sections (e.g., Blog, Sponsors, etc.)
      • Many improvements under the hood.
    • MAJOR: Github Sponsor

      • Now you can support SysIdentPy by becoming a Sponsor! Details: https://github.com/sponsors/wilsonrljr
    • Tests:

      • Now there are test for almost every function.
      • Neural NARX tests are raising numpy issues. It'll be fixed til next update.
    • FIX: NFIR models in General Estimators

      • Fix support for NFIR models using sklearn estimators.
    • The setup is now handled by the pyproject.toml file.

    • Remove unused code.

    • Fix docstring variables.

    • Fix code format issues.

    • Fix minor grammatical and spelling mistakes.

    • Fix issues related to html on Jupyter notebooks examples on documentation.

    • Updated Readme.

    opened by wilsonrljr 0
  • steps_ahead not simulating next steps in SimulateNARMAX

    steps_ahead not simulating next steps in SimulateNARMAX

    https://github.com/wilsonrljr/sysidentpy/blob/440bd926892b506506eaa37d3864cfed99e6a2b1/sysidentpy/simulation/_simulation.py#L333

    bug When trying to simulate duffing equation

    x_1 = 1.0 x_2
    x_2 = -0.15 x_1 + 2.75 x_2 - 1.0 x_2^3
    

    by giving steps_ahead = 2 or more, it is still predicting the one step forward for all the given test values. And it cannot simulate with out the steps_ahead parameter and also when steps_ahead = 50 or more. Please see the respective screenshots of the simulations.

    ident_model = np.array([
          [1001, 1001, 1001],
          [1001,    0,    0],
          [2001,    0,    0],
           ])
    
    
    s = SimulateNARMAX(basis_function=Polynomial(degree=3), calculate_err=True, estimate_parameter=True, extended_least_squares=True)
    yhat_simulate = s.simulate(
        X_train=x_train,
        y_train=y_train,
        X_test=x_test,
        y_test=y_test,
        model_code=ident_model,
        steps_ahead=2)
    

    without steps_ahead wostepahead steps_ahead = 1 wstepahead1 steps_ahead = 2 wstepahead2nmor steps_ahead = 50 wstepahead50 steps_ahead = 100 wstepahead100

    Thank you very much for this very insightful and helpful project.

    opened by Lalith-Sagar-Devagudi 1
  • Fix Typo in code example

    Fix Typo in code example

    Example code in Basic Usage/Build a Polynomial NARX model has a typo in compute_cross_correlation that gives an error when executed since variable used does not exist

    opened by Gabo-Tor 0
  • The maximum lag of the fitted model is the maximum lag between ylag and xlag

    The maximum lag of the fitted model is the maximum lag between ylag and xlag

    The maximum lag of the fitted model should be updated based on the final_model code. If the user saves the model and just want to predict, the initial conditions must have max(xlag, ylag) even if the final model have a lower final lag.

    Ex.:

    
    model = PolynomialNarmax(
            ylag=10,
            xlag=10
    )
    
    fitted_model = [
        [1001,    0], # y(k-1)
        [2001, 1001], # x1(k-1)y(k-1)
        [2002,    0], # x1(k-2)
        ]
    
    

    The maximum lag in the version v0.1.6 will be 10. However, setting the maximum lag equal 2 is more intuitive because the user do not have to worry about it.

    opened by wilsonrljr 0
  • Support for training from multiple datasets

    Support for training from multiple datasets

    as far as I can tell, the model.fit(X,y) function can only support a single training dataset. I would like to train a model based on multiple recorded datasets (say, 5 recordings, each 10 minutes long, but not captured consecutively, so concatenation is not correct). is this possible? is this planned for a future release? see for example: https://www.mathworks.com/help/ident/ug/dealing-with-multi-experiment-data-and-merging-models.html

    Enhancement 
    opened by jtylka 2
  • spatio-temporal identification

    spatio-temporal identification

    Is your feature request related to a problem? Please describe. identification of PDEs

    Describe the solution you'd like spatio-temporal model creation and parameter estimation based only on data

    Describe alternatives you've considered the ERR can be used for the purpose too

    Additional context any plans on developing this feature? :)

    Enhancement 
    opened by helonayala 1
Releases(v0.2.1)
  • v0.2.1(Aug 30, 2022)

    We're happy to announce the v0.2.1 release with new methods and bug fixes:

    You can see the changelog here: http://sysidentpy.org/changelog/changelog/

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jun 18, 2022)

    We're happy to announce the v0.2.0 release with new methods and bug fixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.2.0.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.9(Mar 5, 2022)

    We're happy to announce the 0.1.9 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.9.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.7(Oct 18, 2021)

    We're happy to announce the 0.1.7 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.7.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.6(Sep 25, 2021)

    We're happy to announce the v0.1.6 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.6.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.5(Mar 14, 2021)

    We're happy to announce the 0.1.5 release with bugfixes and new code optimizations:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.5.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade

    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Dec 6, 2020)

    We're happy to announce the 0.1.3 release with bugfixes and new code optimizations:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.3.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Sep 12, 2020)

Owner
Wilson Rocha
Master in Electrical Engineering. Data Scientist. Professor. Member of Control and Modelling Group (GCOM)
Wilson Rocha
HyperDict - Self linked dictionary in Python

Hyper Dictionary Advanced python dictionary(hash-table), which can link it-self

8 Feb 06, 2022
FLSim a flexible, standalone library written in PyTorch that simulates FL settings with a minimal, easy-to-use API

Federated Learning Simulator (FLSim) is a flexible, standalone core library that simulates FL settings with a minimal, easy-to-use API. FLSim is domain-agnostic and accommodates many use cases such a

Meta Research 162 Jan 02, 2023
Official codebase for ICLR oral paper Unsupervised Vision-Language Grammar Induction with Shared Structure Modeling

CLIORA This is the official codebase for ICLR oral paper: Unsupervised Vision-Language Grammar Induction with Shared Structure Modeling. We introduce

Bo Wan 32 Dec 23, 2022
Quadruped-command-tracking-controller - Quadruped command tracking controller (flat terrain)

Quadruped command tracking controller (flat terrain) Prepare Install RAISIM link

Yunho Kim 4 Oct 20, 2022
Repository relating to the CVPR21 paper TimeLens: Event-based Video Frame Interpolation

TimeLens: Event-based Video Frame Interpolation This repository is about the High Speed Event and RGB (HS-ERGB) dataset, used in the 2021 CVPR paper T

Robotics and Perception Group 544 Dec 19, 2022
Unsupervised Image-to-Image Translation

UNIT: UNsupervised Image-to-image Translation Networks Imaginaire Repository We have a reimplementation of the UNIT method that is more performant. It

Ming-Yu Liu 劉洺堉 1.9k Dec 26, 2022
Adaptive Denoising Training (ADT) for Recommendation.

DenoisingRec Adaptive Denoising Training for Recommendation. This is the pytorch implementation of our paper at WSDM 2021: Denoising Implicit Feedback

Wenjie Wang 51 Dec 30, 2022
Arquitetura e Desenho de Software.

S203 Este é um repositório dedicado às aulas de Arquitetura e Desenho de Software, cuja sigla é "S203". E agora, José? Como não tenho muito a falar aq

Fabio 7 Oct 23, 2021
A motion detection system with RaspberryPi, OpenCV, Python

Human Detection System using Raspberry Pi Functionality Activates a relay on detecting motion. You may need following components to get the expected R

Omal Perera 55 Dec 04, 2022
git《Tangent Space Backpropogation for 3D Transformation Groups》(CVPR 2021) GitHub:1]

LieTorch: Tangent Space Backpropagation Introduction The LieTorch library generalizes PyTorch to 3D transformation groups. Just as torch.Tensor is a m

Princeton Vision & Learning Lab 482 Jan 06, 2023
Pytorch Implementation of Auto-Compressing Subset Pruning for Semantic Image Segmentation

Pytorch Implementation of Auto-Compressing Subset Pruning for Semantic Image Segmentation Introduction ACoSP is an online pruning algorithm that compr

Merantix 8 Dec 07, 2022
Keras like implementation of Deep Learning architectures from scratch using numpy.

Mini-Keras Keras like implementation of Deep Learning architectures from scratch using numpy. How to contribute? The project contains implementations

MANU S PILLAI 5 Oct 10, 2021
Codes and pretrained weights for winning submission of 2021 Brain Tumor Segmentation (BraTS) Challenge

Winning submission to the 2021 Brain Tumor Segmentation Challenge This repo contains the codes and pretrained weights for the winning submission to th

94 Dec 28, 2022
An AI Assistant More Than a Toolkit

tymon An AI Assistant More Than a Toolkit The reason for creating framework tymon is simple. making AI more like an assistant, helping us to complete

TymonXie 46 Oct 24, 2022
The Unreasonable Effectiveness of Random Pruning: Return of the Most Naive Baseline for Sparse Training

[ICLR 2022] The Unreasonable Effectiveness of Random Pruning: Return of the Most Naive Baseline for Sparse Training The Unreasonable Effectiveness of

VITA 44 Dec 23, 2022
Funnels: Exact maximum likelihood with dimensionality reduction.

Funnels This repository contains the code needed to reproduce the experiments from the paper: Funnels: Exact maximum likelihood with dimensionality re

2 Apr 21, 2022
Implementation of BI-RADS-BERT & The Advantages of Section Tokenization.

BI-RADS BERT Implementation of BI-RADS-BERT & The Advantages of Section Tokenization. This implementation could be used on other radiology in house co

1 May 17, 2022
PICK: Processing Key Information Extraction from Documents using Improved Graph Learning-Convolutional Networks

Code for the paper "PICK: Processing Key Information Extraction from Documents using Improved Graph Learning-Convolutional Networks" (ICPR 2020)

Wenwen Yu 498 Dec 24, 2022
ClevrTex: A Texture-Rich Benchmark for Unsupervised Multi-Object Segmentation

ClevrTex This repository contains dataset generation code for ClevrTex benchmark from paper: ClevrTex: A Texture-Rich Benchmark for Unsupervised Multi

Laurynas Karazija 26 Dec 21, 2022
Codes for NeurIPS 2021 paper "Adversarial Neuron Pruning Purifies Backdoored Deep Models"

Adversarial Neuron Pruning Purifies Backdoored Deep Models Code for NeurIPS 2021 "Adversarial Neuron Pruning Purifies Backdoored Deep Models" by Dongx

Dongxian Wu 31 Dec 11, 2022