Python package for missing-data imputation with deep learning

Overview

MIDASpy

Overview

MIDASpy is a Python package for multiply imputing missing data using deep learning methods. The MIDASpy algorithm offers significant accuracy and efficiency advantages over other multiple imputation strategies, particularly when applied to large datasets with complex features. In addition to implementing the algorithm, the package contains functions for processing data before and after model training, running imputation model diagnostics, generating multiple completed datasets, and estimating regression models on these datasets.

For an implementation in R, see our rMIDAS repository here.

Background and suggested citation

For more information on MIDAS, the method underlying the software, see:

Lall, Ranjit, and Thomas Robinson. 2021. “The MIDAS Touch: Accurate and Scalable Missing-Data Imputation with Deep Learning.” Political Analysis. https://doi.org/10.1017/pan.2020.49.

An ungated version of the paper is available here.

Installation

To install via pip, enter the following command into the terminal:
pip install MIDASpy

The latest development version (potentially unstable) can be installed via the terminal with: pip install git+https://github.com/MIDASverse/MIDASpy.git

MIDAS requires:

  • Python (>=3.5; <3.9)
  • Numpy (>=1.5)
  • Pandas (>=0.19)
  • Tensorflow (>= 1.10) – TensorFlow>=2.2 now fully supported
  • Matplotlib
  • Statmodels
  • Scipy
  • TensorFlow Addons (>=0.11 if using Tensorflow >= 2.2)

Tensorflow also has a number of requirements, particularly if GPU acceleration is desired. See https://www.tensorflow.org/install/ for details.

Example

For a simple demonstration of MIDASpy, see our Jupyter Notebook example.

Version 1.2.1 (January 2021)

v1.2.1 adds new pre-processing functionality and a multiple imputation regression function.

Users can now automatically preprocess binary and categorical columns prior to running the MIDAS algorithm using binary_conv() and cat_conv().

The new combine() function allows users to run regression analysis across the complete data, following Rubin’s combination rules.

Version 1.1.1 (October 2020)

v1.1.1 fixes a minor dependency bug.

Update adds full Tensorflow 2.X support:

  • Users can now run the MIDAS algorithm in TensorFlow 2.X (TF1 support retained)

  • Tidier handling of random seed setting across both TensorFlow and NumPy

  • Minor bug fixes

Previous versions

Version 1.0.2 (September 2020)

Key changes:

  • Minor, mainly cosmetic, changes to the underlying source code.
  • Renamed ‘categorical_columns’ argument in build_model() to ‘binary_columns’ to avoid confusion
  • Added plotting arguments to overimputation() method to suppress intermediary overimputation plots (plot_main) and all plots (skip_plot).
  • Changed overimputation() plot titles, labels and legends
  • Added tensorflow 2.0 version check on import
  • Fixed seed-setting bug in earlier versions

Alpha 0.2:

Variational autoencoder enabled. More flexibility in model specification, although defaulting to a simple mirrored system. Deeper analysis tools within .overimpute() for checking fit on continuous values. Constructor code deconflicted. Individual output specification enabled for very large datasets.

Key added features:

  • Variational autoencoder capacity added, including encoding to and sampling from latent space

Planned features:

  • Time dependence handling through recurrent cells
  • Improving the pipeline methods for very large datasets
  • Tensorboard integration
  • Dropout scaling
  • A modified constructor that can generate embeddings for better interpolation of features
  • R support

Wish list:

  • Smoothing for time series (LOESS?)
  • Informative priors?

Alpha 0.1:

  • Basic functionality feature-complete.
  • Support for mixed categorical and continuous data types
  • An “additional data” pipeline, allowing data that may be relevant to the imputation to be included (without being included in error generating statistics)
  • Simplified calibration for model complexity through the “overimputation” function, including visualization of reconstructed features
  • Basic large dataset functionality
Comments
  • Fix mutable defaults

    Fix mutable defaults

    I have made a few changes as it relates to the sanity and typechecking of:

    layer_structure output_layers weight_decay output_structure seed

    Additionally,

    _batch_iter_zsample and _sort_cols appear to work as staticmethods, I have applied the decorator.

    Please test ahead of merging, as this should not make any breaking changes.

    opened by David-Woroniuk 5
  • Improve TensorFlow 2.X compatibility

    Improve TensorFlow 2.X compatibility

    Current behaviour allows MIDASpy to be loaded when using TF 2.X, but returns logging error to inform users imputation only possible in TF1.X

    Looks like all TF1 components can be updated to TF 2.X -- just requires additional tensorflow-addons package dependency for the AdamW optimiser.

    enhancement 
    opened by tsrobinson 3
  • A few small commits

    A few small commits

    Each of the commits are hopefully self explanatory:

    • small typo in setup
    • Typehints, typechecking and removal of mutable defaults (as previously discussed with @tsrobinson)
    • Basic code cleanup using Black
    • removal of antipattern (== bool)
    • addition of cont_kdes param to docstring (please add a description or remove.
    • decorated staticmethods
    • added a doctring for the class (formatting)
    • removal of antipattern (== bool) and removal of additional non-required \
    • add simple sanity checking for savepath
    opened by David-Woroniuk 2
  • Use of ```isinstance``` instead of ```type```

    Use of ```isinstance``` instead of ```type```

    Firstly, a great package.

    I noticed that the package uses if type(var) == float:, and thought it may be useful to modify the behaviour to be more Pydantic.

    To summarise, isinstance caters for inheritance (where an instance of a derived class is an instance of a base class), while checking for equality of type does not. This instead demands identity of types and rejects instances of subclasses.

    Typical Python code should support inheritance, so isinstance is less bad than checking types, as it supports inheritance. However, “duck typing” would be the preferred (try, except), catching all exceptions associated with an incorrect type (TypeError).

    I refer to lines 142-153, whereby the list type is evaluated:

        if type(layer_structure) == list:
          self.layer_structure = layer_structure
        else:
          raise ValueError("Layer structure must be specified within a list")
    

    which could be achieved more elegantly using:

    if not isinstance(layer_structure, list):
        raise TypeError("Layer structure must be specified within a list.")
    

    181-187:

        if weight_decay == 'default':
          self.weight_decay = 'default'
        elif type(weight_decay) == float:
          self.weight_decay = weight_decay
        else:
          raise ValueError("Weight decay argument accepts either 'standard' (string) "\
                           "or floating point")
    

    whereby the type (or types) could be hinted to the user within the init dunder method, and can be evaluated through:

    if isinstance(weight_decay, str):
       if weight_decay != 'default':
            raise ValueError("A warning that the value must be 'default' or a float type")
       self.weight_decay = weight_decay
    elif isinstance(weight_decay, float):
       self.weight_decay = weight_decay
    

    Depending on the python versions supported, I would also recommend using typehints, and using the below:

    from typing import List
    
    abc_var: List[int]
    

    More than happy to submit a PR with the proposed changes.

    opened by David-Woroniuk 2
  • Heuristics on choosing a model structure

    Heuristics on choosing a model structure

    Hi,

    I was wondering if there was any heuristics on choosing a model structure for different types / sizes of datasets. For instance, if I had a standard corporate dataset with 20,000 rows and 15 columns, are there any sure-fire methods / parameters I should be using? Are there any clear do's or dont's in certain situations?

    opened by AnotherSamWilson 1
  • UnboundLocalError: local variable 'train_rng' referenced before assignment

    UnboundLocalError: local variable 'train_rng' referenced before assignment

    If no seed is given when initialising the Midas object, then no seed is passed to Midas.train_model() and so the variable train_rng is left unassigned (line 748) and this creates an error on line on 759 when a value for train_rng is expected.

    I suspect this same issue will arise in other areas where if self.seed is not None: is used without a corresponding else statement (e.g. line 1184 in Midas.over_impute()).

    I suspect this can be fixed by simply adding an else statement which generates a random seed and uses this to assign a value to train_rng

    Interpreter settings: Python 3.9

    numpy~=1.22.1 pandas~=1.3.5

    scipy==1.8.0 matplotlib~=3.5.1 scikit-learn~=1.0.1 tensorflow==2.8.0 keras~=2.6.0 graphviz~=0.19 MIDASpy~=1.2.1 statsmodels~=0.13.2

    bug priority 
    opened by alrichardbollans 1
  • How to reverse One hot encoding

    How to reverse One hot encoding

    Hello,

    How to get the data in the original form (reverse dummies). We receive the imputed dataset in one hot encoded form. But how to convert it into the original dataset (the categorical data). Thank you

    opened by khanwa 1
  • Train data

    Train data

    when i try to train data " adult data" this message showed up Error in py_call_impl(callable, dots$args, dots$keywords) : ValueError: Imputation target contains no missing values. Please ensure missing values are encoded as type np.nan I tried to replace the missing values with np.nan but same message came

    opened by ihameed11 1
  • Torch/TF2 version

    Torch/TF2 version

    MIDASpy is currently implemented using logic of TF1 and compatibility layers. As TF2 matures and more graph-based features become deprecated (see e.g. #21), we will need to plan for larger scale update of codebase.

    We could try rebuild in TF2 natively or alternatively pivot to PyTorch implementation, which has a more "pythonic" feel.

    enhancement help wanted 
    opened by tsrobinson 0
  • VAE deprecation warning from tf.distributions

    VAE deprecation warning from tf.distributions

    Running MIDAS using VAE leads to deprecation warning re. tf.compat.v1.distributions.

    E.g.

    >>> tf.compat.v1.distributions.Normal()
    WARNING:tensorflow:From <stdin>:1: Normal.__init__ (from tensorflow.python.ops.distributions.normal) is deprecated and will be removed after 2019-01-01.
    Instructions for updating:
    The TensorFlow Distributions library has moved to TensorFlow Probability (https://github.com/tensorflow/probability). You should update all references to use `tfp.distributions` instead of `tf.distributions`.
    

    Migrating affected code to tfp.distributions is not straightforward as not designed for TF1 graph-oriented model. We should investigate solutions to safeguard codebase in medium term.

    enhancement 
    opened by tsrobinson 0
  • Optimizing MIDAS on very large/complex datasets

    Optimizing MIDAS on very large/complex datasets

    In very large datasets (~30,000 samples x 1,000,000 features) with complex relationships (e.g. cancer omics data), the runtime for MIDAS can take a very long time (days?), even on a single GPU. However, I would like to take advantage of the 'overimpute' feature for hyperparameter tuning. This is prohibitive since this very useful feature runs the algorithm multiple times to evaluate various settings.

    Would random downsampling of samples (columns) and/or features (rows) generalize the optimal hyperparameters to the larger dataset? For instance, a random subset of 500-1,000 samples with 5,000-10,000 features. This would be to specifically determine the optimal number of: nodes, layers, learning rate, and training epochs. I would think batch size (which can speed up training) is a function of the dataset size, so this would not generalize.

    Any help would be great

    opened by neuro30 0
  • Error with multiple GPUs: Do not use tf.reset_default_graph() to clear nested graphs

    Error with multiple GPUs: Do not use tf.reset_default_graph() to clear nested graphs

    I am trying to utilize two GPUs with MIDASpy. However, I get the following error during set-up:

    from sklearn.preprocessing import MinMaxScaler
    import numpy as np
    import pandas as pd
    import tensorflow as tf
    import MIDASpy as md
    
    data_0 = pd.read_csv('/home/comp/Documents/file.txt', sep = "\t")
    data_0.columns.str.strip()
    
    data_0 = data_0.set_index('Unnamed: 0')
    data_0.index.names = [None]
    
    np.random.seed(441)
    
    na_loc = data_0.isnull()
    data_0[na_loc] = np.nan
    
    imputer = md.Midas(layer_structure= [256, 256, 256],
                       learn_rate= 1e-4,
                       input_drop= 0.9,
                       train_batch = 50,
                       savepath= '/home/comp/Documents/save',
                       seed= 89)
    
    strategy = tf.distribute.MirroredStrategy()
    
    with strategy.scope():
    imputer.build_model(data_0)
    
    AssertionError: Do not use tf.reset_default_graph() to clear nested graphs. If you need a cleared graph, exit the nesting and create a new graph.
    enhancement help wanted 
    opened by neuro30 1
  • values not imputed

    values not imputed

    I'm essentially running the demo code, but with my own input data (all numeric data), and the data frames generated by imputer.generate_samples(m=10).output_list still have the same missing values as in the input.

    Example input table:

    Feature     feat1  feat2  feat3  ...  feat30  feat31  feat32
    ERS2551628                65.0         0.0             101.0  ...            105.0                 230.0                27.0
    SRS143466                 43.0         NaN              34.0  ...             98.0                   0.0                26.0
    SRS023715                  0.0        54.0               0.0  ...             33.0                  55.0                 NaN
    SRS580227                  0.0         0.0              10.0  ...             67.0                  22.0                 0.0
    DRS091214             327457.0         0.0               NaN  ...              NaN                   0.0                24.0
    ...                        ...         ...               ...  ...              ...                   ...                 ...
    ERS2551594                74.0        15.0              21.0  ...             93.0                  40.0                 0.0
    ERS634957                  0.0        12.0               0.0  ...              0.0                  45.0                 0.0
    DRS087574                  0.0        80.0              43.0  ...            209.0                   NaN                12.0
    ERS634952                 33.0        56.0              11.0  ...              NaN                1032.0                 0.0
    SRS1820544                49.0       102.0              12.0  ...             13.0                  27.0                49.0
    

    ...and the output:

    Feature     feat1  feat2  feat3  ...  feat30  feat31  feat32
    ERS2551628                65.0         0.0             101.0  ...            105.0                 230.0                27.0
    SRS143466                 43.0         NaN              34.0  ...             98.0                   0.0                26.0
    SRS023715                  0.0        54.0               0.0  ...             33.0                  55.0                 NaN
    SRS580227                  0.0         0.0              10.0  ...             67.0                  22.0                 0.0
    DRS091214             327457.0         0.0               NaN  ...              NaN                   0.0                24.0
    ...                        ...         ...               ...  ...              ...                   ...                 ...
    ERS2551594                74.0        15.0              21.0  ...             93.0                  40.0                 0.0
    ERS634957                  0.0        12.0               0.0  ...              0.0                  45.0                 0.0
    DRS087574                  0.0        80.0              43.0  ...            209.0                   NaN                12.0
    ERS634952                 33.0        56.0              11.0  ...              NaN                1032.0                 0.0
    SRS1820544                49.0       102.0              12.0  ...             13.0                  27.0                49.0
    

    Any idea on why the missing values are not imputed?

    conda env

    # Name                    Version                   Build  Channel
    _libgcc_mutex             0.1                 conda_forge    conda-forge
    _openmp_mutex             4.5                       1_gnu    conda-forge
    _tflow_select             2.3.0                       mkl
    absl-py                   0.15.0                   pypi_0    pypi
    aiohttp                   3.8.1            py39h3811e60_0    conda-forge
    aiosignal                 1.2.0              pyhd8ed1ab_0    conda-forge
    astor                     0.8.1              pyh9f0ad1d_0    conda-forge
    astunparse                1.6.3              pyhd8ed1ab_0    conda-forge
    async-timeout             4.0.2              pyhd8ed1ab_0    conda-forge
    attrs                     21.4.0             pyhd8ed1ab_0    conda-forge
    blas                      1.1                    openblas    conda-forge
    blinker                   1.4                        py_1    conda-forge
    brotlipy                  0.7.0           py39h3811e60_1003    conda-forge
    bzip2                     1.0.8                h7f98852_4    conda-forge
    c-ares                    1.18.1               h7f98852_0    conda-forge
    ca-certificates           2021.10.26           h06a4308_2
    cachetools                4.2.4              pyhd8ed1ab_0    conda-forge
    certifi                   2021.10.8        py39hf3d152e_1    conda-forge
    cffi                      1.15.0           py39h4bc2ebd_0    conda-forge
    charset-normalizer        2.0.9              pyhd8ed1ab_0    conda-forge
    click                     8.0.3            py39hf3d152e_1    conda-forge
    cryptography              36.0.0           py39h9ce1e76_0
    cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
    dataclasses               0.8                pyhc8e2a94_3    conda-forge
    flatbuffers               1.12                     pypi_0    pypi
    freetype                  2.11.0               h70c0345_0
    frozenlist                1.2.0            py39h3811e60_1    conda-forge
    gast                      0.3.3                    pypi_0    pypi
    google-auth               1.35.0                   pypi_0    pypi
    google-auth-oauthlib      0.4.1                      py_2    conda-forge
    google-pasta              0.2.0              pyh8c360ce_0    conda-forge
    grpcio                    1.32.0                   pypi_0    pypi
    h5py                      2.10.0          nompi_py39h98ba4bc_106    conda-forge
    hdf5                      1.10.6          nompi_h3c11f04_101    conda-forge
    idna                      3.3                pyhd3eb1b0_0
    importlib-metadata        4.10.0           py39hf3d152e_0    conda-forge
    jbig                      2.1               h7f98852_2003    conda-forge
    joblib                    1.1.0                    pypi_0    pypi
    jpeg                      9d                   h516909a_0    conda-forge
    keras-preprocessing       1.1.2              pyhd8ed1ab_0    conda-forge
    kiwisolver                1.3.2            py39h1a9c180_1    conda-forge
    lcms2                     2.12                 hddcbb42_0    conda-forge
    ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
    lerc                      3.0                  h9c3ff4c_0    conda-forge
    libblas                   3.9.0           1_h6e990d7_netlib    conda-forge
    libcblas                  3.9.0           3_h893e4fe_netlib    conda-forge
    libdeflate                1.8                  h7f98852_0    conda-forge
    libffi                    3.4.2                h7f98852_5    conda-forge
    libgcc-ng                 11.2.0              h1d223b6_11    conda-forge
    libgfortran-ng            7.5.0               h14aa051_19    conda-forge
    libgfortran4              7.5.0               h14aa051_19    conda-forge
    libgomp                   11.2.0              h1d223b6_11    conda-forge
    liblapack                 3.9.0           3_h893e4fe_netlib    conda-forge
    libnsl                    2.0.0                h7f98852_0    conda-forge
    libopenblas               0.3.13               h4367d64_0
    libpng                    1.6.37               hed695b0_2    conda-forge
    libprotobuf               3.19.2               h780b84a_0    conda-forge
    libstdcxx-ng              11.2.0              he4da1e4_11    conda-forge
    libtiff                   4.3.0                h6f004c6_2    conda-forge
    libuuid                   2.32.1            h14c3975_1000    conda-forge
    libwebp-base              1.2.1                h7f98852_0    conda-forge
    libzlib                   1.2.11            h36c2ea0_1013    conda-forge
    lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
    markdown                  3.3.6              pyhd8ed1ab_0    conda-forge
    matplotlib                3.3.2                         0    conda-forge
    matplotlib-base           3.3.2            py39h98787fa_1    conda-forge
    midaspy                   1.2.1                    pypi_0    pypi
    multidict                 5.2.0            py39h3811e60_1    conda-forge
    ncurses                   6.2                  h58526e2_4    conda-forge
    numpy                     1.19.5                   pypi_0    pypi
    oauthlib                  3.1.1              pyhd8ed1ab_0    conda-forge
    olefile                   0.46               pyh9f0ad1d_1    conda-forge
    openblas                  0.3.4             h9ac9557_1000    conda-forge
    openjpeg                  2.4.0                hb52868f_1    conda-forge
    openssl                   3.0.0                h7f98852_2    conda-forge
    opt_einsum                3.3.0              pyhd8ed1ab_1    conda-forge
    pandas                    1.3.5            py39hde0f152_0    conda-forge
    patsy                     0.5.2              pyhd8ed1ab_0    conda-forge
    pillow                    8.4.0            py39ha612740_0    conda-forge
    pip                       21.3.1             pyhd8ed1ab_0    conda-forge
    protobuf                  3.19.2           py39he80948d_0    conda-forge
    pyasn1                    0.4.8                      py_0    conda-forge
    pyasn1-modules            0.2.8                      py_0
    pycparser                 2.21               pyhd8ed1ab_0    conda-forge
    pyjwt                     2.3.0              pyhd8ed1ab_1    conda-forge
    pyopenssl                 21.0.0             pyhd8ed1ab_0    conda-forge
    pyparsing                 3.0.6              pyhd8ed1ab_0    conda-forge
    pysocks                   1.7.1            py39hf3d152e_4    conda-forge
    python                    3.9.9           h543edf9_0_cpython    conda-forge
    python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
    python_abi                3.9                      2_cp39    conda-forge
    pytz                      2021.3             pyhd8ed1ab_0    conda-forge
    pyu2f                     0.1.5              pyhd8ed1ab_0    conda-forge
    readline                  8.1                  h46c0cb4_0    conda-forge
    requests                  2.27.0             pyhd8ed1ab_0    conda-forge
    requests-oauthlib         1.3.0              pyh9f0ad1d_0    conda-forge
    rsa                       4.8                pyhd8ed1ab_0    conda-forge
    scikit-learn              1.0.2                    pypi_0    pypi
    scipy                     1.7.1            py39hc65b3f8_2
    setuptools                60.2.0           py39hf3d152e_0    conda-forge
    six                       1.15.0                   pypi_0    pypi
    sqlite                    3.37.0               h9cd32fc_0    conda-forge
    statsmodels               0.13.1           py39hce5d2b2_0    conda-forge
    tensorboard               2.6.0                      py_0
    tensorboard-data-server   0.6.1                    pypi_0    pypi
    tensorboard-plugin-wit    1.8.1              pyhd8ed1ab_0    conda-forge
    tensorflow                2.4.1           mkl_py39h4683426_0
    tensorflow-addons         0.15.0                   pypi_0    pypi
    tensorflow-base           2.4.1           mkl_py39h43e0292_0
    tensorflow-estimator      2.4.0                    pypi_0    pypi
    termcolor                 1.1.0                      py_2    conda-forge
    threadpoolctl             3.0.0                    pypi_0    pypi
    tk                        8.6.11               h27826a3_1    conda-forge
    tornado                   6.1              py39h3811e60_2    conda-forge
    typeguard                 2.13.3                   pypi_0    pypi
    typing-extensions         3.7.4.3                  pypi_0    pypi
    tzdata                    2021e                he74cb21_0    conda-forge
    urllib3                   1.26.7             pyhd8ed1ab_0    conda-forge
    werkzeug                  2.0.2              pyhd3eb1b0_0
    wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
    wrapt                     1.12.1                   pypi_0    pypi
    xz                        5.2.5                h516909a_1    conda-forge
    yarl                      1.7.2            py39h3811e60_1    conda-forge
    zipp                      3.6.0              pyhd8ed1ab_0    conda-forge
    zlib                      1.2.11            h36c2ea0_1013    conda-forge
    zstd                      1.5.1                ha95c52a_0    conda-forge
    
    opened by nick-youngblut 1
Releases(v1.2.3)
Owner
MIDASverse
MIDAS: A deep learning method for missing-data imputation
MIDASverse
[CVPR 2021] Teachers Do More Than Teach: Compressing Image-to-Image Models (CAT)

CAT arXiv Pytorch implementation of our method for compressing image-to-image models. Teachers Do More Than Teach: Compressing Image-to-Image Models Q

Snap Research 160 Dec 09, 2022
This source code is implemented using keras library based on "Automatic ocular artifacts removal in EEG using deep learning"

CSP_Deep_EEG This source code is implemented using keras library based on "Automatic ocular artifacts removal in EEG using deep learning" {https://www

Seyed Mahdi Roostaiyan 2 Nov 08, 2022
Code and data form the paper BERT Got a Date: Introducing Transformers to Temporal Tagging

BERT Got a Date: Introducing Transformers to Temporal Tagging Satya Almasian*, Dennis Aumiller*, and Michael Gertz Heidelberg University Contact us vi

54 Dec 04, 2022
A unet implementation for Image semantic segmentation

Unet-pytorch a unet implementation for Image semantic segmentation 参考网上的Unet做分割的代码,做了一个针对kaggle地盐识别的,请去以下地址获取数据集: https://www.kaggle.com/c/tgs-salt-id

Rabbit 3 Jun 29, 2022
Shōgun

The SHOGUN machine learning toolbox Unified and efficient Machine Learning since 1999. Latest release: Cite Shogun: Develop branch build status: Donat

Shōgun ML 2.9k Jan 04, 2023
BASH - Biomechanical Animated Skinned Human

We developed a method animating a statistical 3D human model for biomechanical analysis to increase accessibility for non-experts, like patients, athletes, or designers.

Machine Learning and Data Analytics Lab FAU 66 Nov 19, 2022
Vision Transformer for 3D medical image registration (Pytorch).

ViT-V-Net: Vision Transformer for Volumetric Medical Image Registration keywords: vision transformer, convolutional neural networks, image registratio

Junyu Chen 192 Dec 20, 2022
PyTorch implementation of SQN based on CloserLook3D's encoder

SQN_pytorch This repo is an implementation of Semantic Query Network (SQN) using CloserLook3D's encoder in Pytorch. For TensorFlow implementation, che

PointCloudYC 1 Oct 21, 2021
TDmatch is a Python library developed to perform matching tasks in three categories:

TDmatch TDmatch is a Python library developed to perform matching tasks in three categories: Text to Data which matches tuples of a table to text docu

Naser Ahmadi 5 Aug 11, 2022
以孤立语假设和宽度优先搜索为基础,构建了一种多通道堆叠注意力Transformer结构的斗地主ai

ddz-ai 介绍 斗地主是一种扑克游戏。游戏最少由3个玩家进行,用一副54张牌(连鬼牌),其中一方为地主,其余两家为另一方,双方对战,先出完牌的一方获胜。 ddz-ai以孤立语假设和宽度优先搜索为基础,构建了一种多通道堆叠注意力Transformer结构的系统,使其经过大量训练后,能在实际游戏中获

freefuiiismyname 88 May 15, 2022
Official PyTorch implementation of the NeurIPS 2021 paper StyleGAN3

Alias-Free Generative Adversarial Networks (StyleGAN3) Official PyTorch implementation of the NeurIPS 2021 paper Alias-Free Generative Adversarial Net

Eugenio Herrera 92 Nov 18, 2022
Amazon Forest Computer Vision: Satellite Image tagging code using PyTorch / Keras with lots of PyTorch tricks

Amazon Forest Computer Vision Satellite Image tagging code using PyTorch / Keras Here is a sample of images we had to work with Source: https://www.ka

Mamy Ratsimbazafy 359 Jan 05, 2023
Hybrid CenterNet - Hybrid-supervised object detection / Weakly semi-supervised object detection

Hybrid-Supervised Object Detection System Object detection system trained by hybrid-supervision/weakly semi-supervision (HSOD/WSSOD): This project is

5 Dec 10, 2022
ZeroVL - The official implementation of ZeroVL

This repository contains source code necessary to reproduce the results presente

31 Nov 04, 2022
A collection of easy-to-use, ready-to-use, interesting deep neural network models

Interesting and reproducible research works should be conserved. This repository wraps a collection of deep neural network models into a simple and un

Aria Ghora Prabono 16 Jun 16, 2022
Sequential model-based optimization with a `scipy.optimize` interface

Scikit-Optimize Scikit-Optimize, or skopt, is a simple and efficient library to minimize (very) expensive and noisy black-box functions. It implements

Scikit-Optimize 2.5k Jan 04, 2023
Yoloxkeypointsegment - An anchor-free version of YOLO, with a simpler design but better performance

Introduction 关键点版本:已完成 全景分割版本:已完成 实例分割版本:已完成 YOLOX is an anchor-free version of

23 Oct 20, 2022
THIS IS THE **OLD** PYMC PROJECT. PLEASE USE PYMC3 INSTEAD:

Introduction Version: 2.3.8 Authors: Chris Fonnesbeck Anand Patil David Huard John Salvatier Web site: https://github.com/pymc-devs/pymc Documentation

PyMC 7.2k Jan 07, 2023
Implementation of Sequence Generative Adversarial Nets with Policy Gradient

SeqGAN Requirements: Tensorflow r1.0.1 Python 2.7 CUDA 7.5+ (For GPU) Introduction Apply Generative Adversarial Nets to generating sequences of discre

Lantao Yu 2k Dec 29, 2022
dualPC.R contains the R code for the main functions.

dualPC.R contains the R code for the main functions. dualPC_sim.R contains an example run with the different PC versions; it calls dualPC_algs.R whic

3 May 30, 2022