Hyperparameters tuning and features selection are two common steps in every machine learning pipeline.

Overview

shap-hypetune

A python package for simultaneous Hyperparameters Tuning and Features Selection for Gradient Boosting Models.

shap-hypetune diagram

Overview

Hyperparameters tuning and features selection are two common steps in every machine learning pipeline. Most of the time they are computed separately and independently. This may result in suboptimal performances and in a more time expensive process.

shap-hypetune aims to combine hyperparameters tuning and features selection in a single pipeline optimizing the optimal number of features while searching for the optimal parameters configuration. Hyperparameters Tuning or Features Selection can also be carried out as standalone operations.

shap-hypetune main features:

  • designed for gradient boosting models, as LGBModel or XGBModel;
  • developed to be integrable with the scikit-learn ecosystem;
  • effective in both classification or regression tasks;
  • customizable training process, supporting early-stopping and all the other fitting options available in the standard algorithms api;
  • ranking feature selection algorithms: Recursive Feature Elimination (RFE); Recursive Feature Addition (RFA); or Boruta;
  • classical boosting based feature importances or SHAP feature importances (the later can be computed also on the eval_set);
  • apply grid-search, random-search, or bayesian-search (from hyperopt);
  • parallelized computations with joblib.

Installation

pip install --upgrade shap-hypetune

lightgbm, xgboost are not needed requirements. The module depends only on NumPy, shap, scikit-learn and hyperopt. Python 3.6 or above is supported.

Media

Usage

from shaphypetune import BoostSearch, BoostRFE, BoostRFA, BoostBoruta

Hyperparameters Tuning

BoostSearch(
    estimator,                              # LGBModel or XGBModel
    param_grid=None,                        # parameters to be optimized
    greater_is_better=False,                # minimize or maximize the monitored score
    n_iter=None,                            # number of sampled parameter configurations
    sampling_seed=None,                     # the seed used for parameter sampling
    verbose=1,                              # verbosity mode
    n_jobs=None                             # number of jobs to run in parallel
)

Feature Selection (RFE)

BoostRFE(  
    estimator,                              # LGBModel or XGBModel
    min_features_to_select=None,            # the minimum number of features to be selected  
    step=1,                                 # number of features to remove at each iteration  
    param_grid=None,                        # parameters to be optimized  
    greater_is_better=False,                # minimize or maximize the monitored score  
    importance_type='feature_importances',  # which importance measure to use: default or shap  
    train_importance=True,                  # where to compute the shap feature importance  
    n_iter=None,                            # number of sampled parameter configurations  
    sampling_seed=None,                     # the seed used for parameter sampling  
    verbose=1,                              # verbosity mode  
    n_jobs=None                             # number of jobs to run in parallel  
)  

Feature Selection (BORUTA)

BoostBoruta(
    estimator,                              # LGBModel or XGBModel
    perc=100,                               # threshold used to compare shadow and real features
    alpha=0.05,                             # p-value levels for feature rejection
    max_iter=100,                           # maximum Boruta iterations to perform
    early_stopping_boruta_rounds=None,      # maximum iterations without confirming a feature
    param_grid=None,                        # parameters to be optimized
    greater_is_better=False,                # minimize or maximize the monitored score
    importance_type='feature_importances',  # which importance measure to use: default or shap
    train_importance=True,                  # where to compute the shap feature importance
    n_iter=None,                            # number of sampled parameter configurations
    sampling_seed=None,                     # the seed used for parameter sampling
    verbose=1,                              # verbosity mode
    n_jobs=None                             # number of jobs to run in parallel
)

Feature Selection (RFA)

BoostRFA(
    estimator,                              # LGBModel or XGBModel
    min_features_to_select=None,            # the minimum number of features to be selected
    step=1,                                 # number of features to remove at each iteration
    param_grid=None,                        # parameters to be optimized
    greater_is_better=False,                # minimize or maximize the monitored score
    importance_type='feature_importances',  # which importance measure to use: default or shap
    train_importance=True,                  # where to compute the shap feature importance
    n_iter=None,                            # number of sampled parameter configurations
    sampling_seed=None,                     # the seed used for parameter sampling
    verbose=1,                              # verbosity mode
    n_jobs=None                             # number of jobs to run in parallel
)

Full examples in the notebooks folder.

Comments
  • Suppress warnings

    Suppress warnings

    Hi,

    While running BoostBoruta according to the notebook toturial I'm getting the following warnings which I would like to suppress:

    'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. Pass 'early_stopping()' callback via 'callbacks' argument instead.
    'verbose' argument is deprecated and will be removed in a future release of LightGBM. Pass 'log_evaluation()' callback via 'callbacks' argument instead.
    

    Any ideas on how to do that?

    Thank you

    opened by Rane90 4
  • Can BoostBoruta be used in a scikit-pipeline?

    Can BoostBoruta be used in a scikit-pipeline?

    Hello, First of all, thank you for this great repo. It looks very promising. I'd like to use BoostBoruta within a scikit-pipeline. Is it possible?

    For now, here is the code I've tried with no success :

    # get the categorical and numeric column names
    num_cols = X_train.select_dtypes(exclude=['object']).columns.tolist()
    cat_cols = X_train.select_dtypes(include=['object']).columns.tolist()
    
    # pipeline for numerical columns
    num_pipe = make_pipeline(
        StandardScaler()
    )
    # pipeline for categorical columns
    cat_pipe = make_pipeline(
        OneHotEncoder(handle_unknown='ignore', sparse=False)
    )
    
    # combine both the pipelines
    full_pipe = ColumnTransformer([
        ('num', num_pipe, num_cols),
        ('cat', cat_pipe, cat_cols)
    ])
    
    model = BoostBoruta(
        clf_lgbm, param_grid=param_dist_hyperopt, n_iter=8, sampling_seed=0, importance_type="shap", train_importance=True,n_jobs=-1, verbose=2
    )
    
    pipeline_hypetune = make_pipeline(full_pipe, model)
    model_selection = RepeatedStratifiedKFold(n_splits=10, n_repeats=2, random_state=2022)
    
    results = cross_validate(pipeline_hypetune, X_train, y, scoring='accuracy', cv=model_selection, return_estimator=True)
    

    No exception is thrown but no model is learned either... Any ideas why?

    Thanks in advance

    opened by YoannPitarch 4
  • ExplainerError

    ExplainerError

    For my dataset I'm getting this error:

    ExplainerError: Additivity check failed in TreeExplainer! Please ensure the data matrix you passed to the explainer is the same
    shape that the model was trained on. If your data shape is correct then please report this on GitHub. Consider retrying with the 
    feature_perturbation='interventional' option. This check failed because for one of the samples the sum of the SHAP values was 
    -0.577556, while the model output was -0.540311. If this difference is acceptable you can set check_additivity=False to disable 
    this check.
    

    I'm using it like this:

    model = BoostRFE(regr_xgb, param_grid=param_dist, 
                                   min_features_to_select=10, 
                                   step=20, 
                                   importance_type='shap_importances',
                                   n_iter=5
                                   )
    

    Any suggestion how to solve this?

    opened by hasan-sayeed 3
  • great software! wonder if it supports for custom CVs?

    great software! wonder if it supports for custom CVs?

    Hello,

    Great package! very easy to use, and it is very effective! :)

    I was wondering if it is possible to use custom CVs for random search + feature selection

    Thanks!

    opened by GalaxyNight-day 3
  • Feature Immportance chart with selected feature names with scores

    Feature Immportance chart with selected feature names with scores

    Hi @cerlymarco ,

    1. How do I get feature names with scores like this? (Traditional Xg-Boost)
    2. And what will be the X-axis scoring scale for that?

    image img-src : https://user-images.githubusercontent.com/42869040/162376574-03869b81-f11e-4d1f-8bea-eddb714d39b0.png

    Thanks

    Originally posted by @VinayChaudhari1996 in https://github.com/cerlymarco/shap-hypetune/issues/4#issuecomment-1092483163

    opened by VinayChaudhari1996 2
  • List of the important features?

    List of the important features?

    Hi, I apologize if this is a dumb question ,but I can't find where to get the list of important features from the trained model? Thanks for any pointers.

    opened by jmrichardson 2
  • Support for state of art hyperparameter optimization packages

    Support for state of art hyperparameter optimization packages

    It would be nice to have options to select some state of art technique for hyperparameter optimization. Such as: https://scikit-optimize.github.io/stable/ https://github.com/optuna/optuna or maybe the best (should be drop in replacement for scikit Grid/Random search, but support advanced techniques from packages above) https://github.com/ray-project/tune-sklearn

    opened by oldrichsmejkal 2
  • Erratic behaviour

    Erratic behaviour

    Hi,

    I am still running a series of experiments with shap-hypertune. Some sort of cross-validation with a number of stratified K-fold splits.

    For each split, I generate random seeds like this: np.random.randint(4294967295).

    A typical run goes like this (there is one for each split):

    11 trials detected for ('num_leaves', 'n_estimators', 'max_depth', 'learning_rate')
    
    trial: 0001 ### iterations: 00008 ### eval_score: 0.94737
    trial: 0002 ### iterations: 00018 ### eval_score: 0.92481
    trial: 0003 ### iterations: 00020 ### eval_score: 0.99248
    trial: 0004 ### iterations: 00017 ### eval_score: 0.97744
    trial: 0005 ### iterations: 00025 ### eval_score: 0.98496
    trial: 0006 ### iterations: 00012 ### eval_score: 0.97744
    trial: 0007 ### iterations: 00020 ### eval_score: 0.99248
    trial: 0008 ### iterations: 00012 ### eval_score: 0.98496
    trial: 0009 ### iterations: 00021 ### eval_score: 0.98496
    trial: 0010 ### iterations: 00018 ### eval_score: 0.98496
    trial: 0011 ### iterations: 00025 ### eval_score: 0.98496
    
    11 trials detected for ('num_leaves', 'n_estimators', 'max_depth', 'learning_rate')
    
    trial: 0001 ### iterations: 00025 ### eval_score: 0.96241
    trial: 0002 ### iterations: 00038 ### eval_score: 0.97744
    trial: 0003 ### iterations: 00037 ### eval_score: 0.97744
    trial: 0004 ### iterations: 00015 ### eval_score: 0.96241
    trial: 0005 ### iterations: 00002 ### eval_score: 0.81203
    trial: 0006 ### iterations: 00018 ### eval_score: 0.96241
    trial: 0007 ### iterations: 00016 ### eval_score: 0.96241
    trial: 0008 ### iterations: 00011 ### eval_score: 0.91729
    trial: 0009 ### iterations: 00038 ### eval_score: 0.97744
    trial: 0010 ### iterations: 00022 ### eval_score: 0.96241
    trial: 0011 ### iterations: 00021 ### eval_score: 0.96992
    

    However, sometimes the eval_score drops dramatically.

    But this does not seem to be your typical stochastic behaviour.

    For instance, normally, f it drops for one split it will drop for all the subsequent splits. In spite of the fact that a new seed is (pseudo) randomly generated for each split at each stage:

    skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=np.random.randint(4294967295))
    
    	clf_lgbm = LGBMClassifier(boosting_type='rf',
                             random_state=np.random.randint(4294967295),
    
    	model = BoostRFA(    
        sampling_seed=np.random.randint(4294967295),	
    
    

    In other cases the number of iterations stays constant for each run:

    11 trials detected for ('num_leaves', 'n_estimators', 'max_depth', 'learning_rate')
    
    trial: 0001 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0002 ### iterations: 00001 ### eval_score: 0.7594
    trial: 0003 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0004 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0005 ### iterations: 00001 ### eval_score: 0.79699
    trial: 0006 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0007 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0008 ### iterations: 00001 ### eval_score: 0.7594
    trial: 0009 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0010 ### iterations: 00001 ### eval_score: 0.69173
    trial: 0011 ### iterations: 00001 ### eval_score: 0.69173
    
    11 trials detected for ('num_leaves', 'n_estimators', 'max_depth', 'learning_rate')
    
    trial: 0001 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0002 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0003 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0004 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0005 ### iterations: 00001 ### eval_score: 0.81955
    trial: 0006 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0007 ### iterations: 00001 ### eval_score: 0.81955
    trial: 0008 ### iterations: 00001 ### eval_score: 0.81955
    trial: 0009 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0010 ### iterations: 00001 ### eval_score: 0.82707
    trial: 0011 ### iterations: 00001 ### eval_score: 0.82707
    

    If you re-run the script, you typically observe the normal behaviour again.

    opened by mirix 1
  • Issue with custom scorer

    Issue with custom scorer

    Hello,

    I have an unbalanced dataset and I am trying to create a custom scorer that finds the best possible recall above a given precision for the minority class.

    The opposite seems to work well. When I feed the following score to shap-hypertune, it produces consistent results for the precision:

    def precision_at_recall(y_true, y_hat):
    	precision, recall, thresholds = precision_recall_curve(y_true, y_hat, pos_label=1)
    	ix = np.argmax(precision[recall >= .9])
    	return 'precision_at_recall', precision[ix], True
    

    The recall and precision for the minority class at a threshold of 0.5 are both around 0.85. If we set a recall above 0.9, the precision decreases accordingly, as expected.

    However, the following does not work:

    def recall_at_precision(y_true, y_hat):
    	precision, recall, thresholds = precision_recall_curve(y_true, y_hat, pos_label=1)
    	ix = np.argmax(recall[precision >= .9])
    	return 'recall_at_precision', recall[ix], True
    

    It always produces a perfect recall (1), regardless of the precision, even if the precision is set to 1.

    opened by mirix 1
  • Error in BoostBoruta

    Error in BoostBoruta

    Hi, I am getting an error while running BoostBoruta for a binary classification task.

    Size of data is: `print(X_clf_train.shape, y_clf_train.shape) print(X_clf_valid.shape, y_clf_valid.shape)

    (102, 32) (102,) (12, 32) (12,) ` and here is the code I use:

    `### BORUTA ###

    model = BoostBoruta( clf_xgb, max_iter=200, perc=100, sampling_seed=0, verbose=3, n_jobs=-1, ) model.fit(X_clf_train, y_clf_train, eval_set=[(X_clf_valid, y_clf_valid)], early_stopping_rounds=6, verbose=3) print(model.n_features_)

    `

    and the error:

    Iterantion: 1 / 200

    XGBoostError Traceback (most recent call last) /tmp/ipykernel_4016678/3155018104.py in <cell line: 11>() 9 n_jobs=-1, 10 ) ---> 11 model.fit(X_clf_train, 12 y_clf_train, 13 eval_set=[(X_clf_valid, y_clf_valid)],

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/shaphypetune/_classes.py in fit(self, X, y, trials, **fit_params) 163 164 if self.param_grid is None: --> 165 results = self._fit(X, y, fit_params) 166 167 for v in vars(results['model']):

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/shaphypetune/_classes.py in _fit(self, X, y, fit_params, params) 66 model = self._build_model(params) 67 if isinstance(model, _BoostSelector): ---> 68 model.fit(X=X, y=y, **fit_params) 69 else: 70 with contextlib.redirect_stdout(io.StringIO()):

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/shaphypetune/_classes.py in fit(self, X, y, **fit_params) 521 _X = self._create_X(X, feat_id_real) 522 with contextlib.redirect_stdout(io.StringIO()): --> 523 estimator.fit(_X, y, **_fit_params) 524 525 # get coefs

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/core.py in inner_f(*args, **kwargs) 434 for k, arg in zip(sig.parameters, args): 435 kwargs[k] = arg --> 436 return f(**kwargs) 437 438 return inner_f

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/sklearn.py in fit(self, X, y, sample_weight, base_margin, eval_set, eval_metric, early_stopping_rounds, verbose, xgb_model, sample_weight_eval_set, base_margin_eval_set, feature_weights, callbacks) 1174 ) 1175 -> 1176 self._Booster = train( 1177 params, 1178 train_dmatrix,

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, xgb_model, callbacks) 187 Booster : a trained booster model 188 """ --> 189 bst = _train_internal(params, dtrain, 190 num_boost_round=num_boost_round, 191 evals=evals,

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks, evals_result, maximize, verbose_eval, early_stopping_rounds) 79 if callbacks.before_iteration(bst, i, dtrain, evals): 80 break ---> 81 bst.update(dtrain, i, obj) 82 if callbacks.after_iteration(bst, i, dtrain, evals): 83 break

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/core.py in update(self, dtrain, iteration, fobj) 1497 1498 if fobj is None: -> 1499 _check_call(_LIB.XGBoosterUpdateOneIter(self.handle, 1500 ctypes.c_int(iteration), 1501 dtrain.handle))

    ~/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/core.py in _check_call(ret) 208 """ 209 if ret != 0: --> 210 raise XGBoostError(py_str(_LIB.XGBGetLastError())) 211 212

    XGBoostError: [12:37:22] ../src/data/data.cc:583: Check failed: labels_.Size() == num_row_ (102 vs. 160) : Size of labels must equal to number of rows. Stack trace: [bt] (0) /home/zeydabadi/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/lib/libxgboost.so(+0x9133f) [0x7fe8df99b33f] [bt] (1) /home/zeydabadi/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/lib/libxgboost.so(+0x110fcc) [0x7fe8dfa1afcc] [bt] (2) /home/zeydabadi/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/lib/libxgboost.so(+0x1b90e7) [0x7fe8dfac30e7] [bt] (3) /home/zeydabadi/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/lib/libxgboost.so(+0x1b99bc) [0x7fe8dfac39bc] [bt] (4) /home/zeydabadi/myvenv/mykears3.9/lib/python3.9/site-packages/xgboost/lib/libxgboost.so(XGBoosterUpdateOneIter+0x50) [0x7fe8df98aed0] [bt] (5) /lib64/libffi.so.6(ffi_call_unix64+0x4c) [0x7febb4ca610e] [bt] (6) /lib64/libffi.so.6(ffi_call+0x36f) [0x7febb4ca5abf] [bt] (7) /home/zeydabadi/mykeras/bin/usr/local/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0x11235) [0x7febb4eba235] [bt] (8) /home/zeydabadi/mykeras/bin/usr/local/lib/python3.9/lib-dynload/_ctypes.cpython-39-x86_64-linux-gnu.so(+0xaa66) [0x7febb4eb3a66]

    opened by zeydabadi 1
  • only 10 features show in the BoostBoruta, without any feature labels/ranks/indexes

    only 10 features show in the BoostBoruta, without any feature labels/ranks/indexes

    I have a dataset with >2000 features. After I run BoostBoruta, 10 features show in the results, but they have no label/ind. information. How can I retrieve feature importances and the original ind./labels mapping to the original feature set?

    opened by raqueldias 1
  • Eval Metric directionality?

    Eval Metric directionality?

    Hi,

    If I use a custom metric like the brier score where lower is better, does this package support looking to minimize the eval metric? or is it by default trying to maximize?

    Thank You

    opened by ericvoots 0
  • Any plan to write a publication or preprint.

    Any plan to write a publication or preprint.

    This is an excellent repo to do the hyper-parameter tuning, and an approach to use SHAP measurement. A publication or preprint helps the practitioners to understand the repo deeper. Thus, I'm curious, do you have any plan to do this?

    opened by JiaxiangBU 0
Releases(v0.2.6)
Owner
Marco Cerliani
Statistician Hacker & Data Scientist
Marco Cerliani
Recurrent Variational Autoencoder that generates sequential data implemented with pytorch

Pytorch Recurrent Variational Autoencoder Model: This is the implementation of Samuel Bowman's Generating Sentences from a Continuous Space with Kim's

Daniil Gavrilov 347 Nov 14, 2022
OSLO: Open Source framework for Large-scale transformer Optimization

O S L O Open Source framework for Large-scale transformer Optimization What's New: December 21, 2021 Released OSLO 1.0. What is OSLO about? OSLO is a

TUNiB 280 Nov 24, 2022
Augmented Traffic Control: A tool to simulate network conditions

Augmented Traffic Control Full documentation for the project is available at http://facebook.github.io/augmented-traffic-control/. Overview Augmented

Meta Archive 4.3k Jan 08, 2023
Repo for my Tensorflow/Keras CV experiments. Mostly revolving around the Danbooru20xx dataset

SW-CV-ModelZoo Repo for my Tensorflow/Keras CV experiments. Mostly revolving around the Danbooru20xx dataset Framework: TF/Keras 2.7 Training SQLite D

20 Dec 27, 2022
[CVPRW 2021] Code for Region-Adaptive Deformable Network for Image Quality Assessment

RADN [CVPRW 2021] Code for Region-Adaptive Deformable Network for Image Quality Assessment [Paper on arXiv] Overview Update [2021/5/7] add codes for W

IIGROUP 53 Dec 28, 2022
Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

Pytorch Lightning 1.4k Jan 01, 2023
Learning to See by Looking at Noise

Learning to See by Looking at Noise This is the official implementation of Learning to See by Looking at Noise. In this work, we investigate a suite o

Manel Baradad Jurjo 82 Dec 24, 2022
Uncertain natural language inference

Uncertain Natural Language Inference This repository hosts the code for the following paper: Tongfei Chen*, Zhengping Jiang*, Adam Poliak, Keisuke Sak

Tongfei Chen 14 Sep 01, 2022
Predicting 10 different clothing types using Xception pre-trained model.

Predicting-Clothing-Types Predicting 10 different clothing types using Xception pre-trained model from Keras library. It is reimplemented version from

AbdAssalam Ahmad 3 Dec 29, 2021
Source code and dataset of the paper "Contrastive Adaptive Propagation Graph Neural Networks forEfficient Graph Learning"

CAPGNN Source code and dataset of the paper "Contrastive Adaptive Propagation Graph Neural Networks forEfficient Graph Learning" Paper URL: https://ar

1 Mar 12, 2022
(Preprint) Official PyTorch implementation of "How Do Vision Transformers Work?"

(Preprint) Official PyTorch implementation of "How Do Vision Transformers Work?"

xxxnell 656 Dec 30, 2022
ACL'2021: LM-BFF: Better Few-shot Fine-tuning of Language Models

LM-BFF (Better Few-shot Fine-tuning of Language Models) This is the implementation of the paper Making Pre-trained Language Models Better Few-shot Lea

Princeton Natural Language Processing 607 Jan 07, 2023
SweiNet is an uncertainty-quantifying shear wave speed (SWS) estimator for ultrasound shear wave elasticity (SWE) imaging.

SweiNet SweiNet is an uncertainty-quantifying shear wave speed (SWS) estimator for ultrasound shear wave elasticity (SWE) imaging. SweiNet takes as in

Felix Jin 3 Mar 31, 2022
It is a system used to detect bone fractures. using techniques deep learning and image processing

MohammedHussiengadalla-Intelligent-Classification-System-for-Bone-Fractures It is a system used to detect bone fractures. using techniques deep learni

Mohammed Hussien 7 Nov 11, 2022
Torch-ngp - A pytorch implementation of the hash encoder proposed in instant-ngp

HashGrid Encoder (WIP) A pytorch implementation of the HashGrid Encoder from ins

hawkey 1k Jan 01, 2023
Temporal Dynamic Convolutional Neural Network for Text-Independent Speaker Verification and Phonemetic Analysis

TDY-CNN for Text-Independent Speaker Verification Official implementation of Temporal Dynamic Convolutional Neural Network for Text-Independent Speake

Seong-Hu Kim 16 Oct 17, 2022
[CVPR 2021] Released code for Counterfactual Zero-Shot and Open-Set Visual Recognition

Counterfactual Zero-Shot and Open-Set Visual Recognition This project provides implementations for our CVPR 2021 paper Counterfactual Zero-S

144 Dec 24, 2022
This repo in the implementation of EMNLP'21 paper "SPARQLing Database Queries from Intermediate Question Decompositions" by Irina Saparina, Anton Osokin

SPARQLing Database Queries from Intermediate Question Decompositions This repo is the implementation of the following paper: SPARQLing Database Querie

Yandex Research 20 Dec 19, 2022
Pytorch implementation of 'Fingerprint Presentation Attack Detector Using Global-Local Model'

RTK-PAD This is an official pytorch implementation of 'Fingerprint Presentation Attack Detector Using Global-Local Model', which is accepted by IEEE T

6 Aug 01, 2022
Jupyter notebooks for using & learning Keras

deep-learning-with-keras-notebooks 這個github的repository主要是個人在學習Keras的一些記錄及練習。希望在學習過程中發現到一些好的資訊與範例也可以對想要學習使用 Keras來解決問題的同好,或是對深度學習有興趣的在學學生可以有一些方便理解與上手範例

ErhWen Kuo 2.1k Dec 27, 2022