Code for the TCAV ML interpretability project

Overview

Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)

Been Kim, Martin Wattenberg, Justin Gilmer, Carrie Cai, James Wexler, Fernanda Viegas, Rory Sayres

ICML Paper: https://arxiv.org/abs/1711.11279

What is TCAV?

Testing with Concept Activation Vectors (TCAV) is a new interpretability method to understand what signals your neural networks models uses for prediction.

What's special about TCAV compared to other methods?

Typical interpretability methods show importance weights in each input feature (e.g, pixel). TCAV instead shows importance of high level concepts (e.g., color, gender, race) for a prediction class - this is how humans communicate!

Typical interpretability methods require you to have one particular image that you are interested in understanding. TCAV gives an explanation that is generally true for a class of interest, beyond one image (global explanation).

For example, for a given class, we can show how much race or gender was important for classifications in InceptionV3. Even though neither race nor gender labels were part of the training input!

Cool, where do these concepts come from?

TCAV learns concepts from examples. For instance, TCAV needs a couple of examples of female, and something not female to learn a "gender" concept. We have tested a variety of concepts: color, gender, race, textures and many others.

Why use high level concepts instead of input features?

Humans think and communicate using concepts, and not using numbers (e.g., weights to each feature). When there are lots of numbers to combine and reason about (many features), it becomes harder and harder for humans to make sense of the information they are accounting for. TCAV instead delivers explanations in the way humans communicate to each other.

The consumer of the explanation may not know machine learning too well. Can they understand the explanation?

Yes. TCAV is designed to make sense to everyone - as long as they can understand the high level concept!

Sounds good. Do I need to change my network to use TCAV?

No. You don't need to change or retrain your network to use TCAV.

Installation

Tensorflow must be installed to use TCAV. But it isn't included in the TCAV pip package install_requires as a user may wish to use it with either the tensorflow or tensorflow-gpu package. So please pip install tensorflow or tensorflow-gpu as well as the tcav package.

pip install tcav

Requirements

See requirements.txt for a list of python dependencies used in testing TCAV. These will all be installed during pip installation of tcav with the exception of tensorflow, as mentioned above.

How to use TCAV

See Run TCAV.ipynb for step by step guide, after pip installing the tcav package.

mytcav = tcav.TCAV(sess,
                   target,
                   concepts,
                   bottlenecks,
                   act_gen,
                   alphas,
                   cav_dir=cav_dir,
                   num_random_exp=2)

results = mytcav.run()

TCAV for discrete models

We provide a simple example of how to run TCAV on models trained on discrete, non-image data. Please see

cd tcav/tcav_examples/discrete/

You can also find a Jupyter notebook for a model trained on KDD99 in here:

tcav/tcav_examples/discrete/kdd99_discrete_example.ipynb.

Requirements

  • tensorflow
  • numpy
  • Pillow
  • matplotlib
  • scikit-learn
  • scipy

How to run unit tests

python -m tcav.cav_test

python -m tcav.model_test

python -m tcav.tcav_test

python -m tcav.utils_test

How to create a new version of the pip package

  1. Ensure the version in setup.py has been updated to a new version.
  2. Run python setup.py bdist_wheel --python-tag py3 and python setup.py bdist_wheel --python-tag py2.
  3. Run twine upload dist/* to upload the py2 and py3 pip packages to PyPi.
Comments
  • Random Images for TCAV for Diabetic Retinopathy application

    Random Images for TCAV for Diabetic Retinopathy application

    Hi,

    I had a question regarding application of TCAV for Diabetic Retinopathy (DR). My question is, for application of TCAV on DR, what do you choose as the random images. Are they completely random images as shown in paper or are the random images related to DR or healthy eye?

    Also, how many random folders/experiments do you use for DR application? For the statistical significance testing?

    opened by soumbane 9
  • Unable to run the tests, program and notebook

    Unable to run the tests, program and notebook

    Hey there,

    I was trying to use the code from the repository and i found that things were not working for me. Here are the things that are of concern to me :

    • Run TCAV.ipynb returns me an error saying No module named tcav_results despite installing tcav.
    • pip install -r requirements.txt throws an error because you used a single = sign instead of ==.
    • python -m tcav.cav_test throws me an error saying ModuleNotFoundError: No module named 'tcav_results'

    Useful information :

    • python --version

    Python 3.6.5

    • pip --version

    pip 19.3.1

    • uname -a

    Linux x1 4.15.0-70-generic #79~16.04.1-Ubuntu SMP Tue Nov 12 14:01:10 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

    opened by akhilpandey95 9
  • Which implementation of InceptionV3 should I be using?

    Which implementation of InceptionV3 should I be using?

    Hi,

    Which implementation of inceptionv3 should I be using to replicate your results? The 3 I have used did not have the names of the layers model.py is looking for. I'd really appreciate if you can point us to the code for inception.

    Thanks!

    opened by rahul003 9
  • hypothesis testing module

    hypothesis testing module

    I could run tcav on zebra class with concept images. however couldn't find the hypothesis testing (Z-test/T-test) section of code in the repo. "If we can reject the null hypothesis of a TCAV score of 0.5, we can consider the resulting concept as related to the class prediction in a significant way. " does that mean consider only those concepts that get tcav score > 0.5 and also pass the hypothesis test?

    opened by KavyaBPadmesh 6
  • question regarding model wrappers (xception model)

    question regarding model wrappers (xception model)

    Hi I have a imagenet-pretrained xception network trained on histology images. I would like to be able to use tcav with this model; however, I'm unsure of how to determine the bottleneck layers that tcav asks for. 1) am i able to use this model for tcav and 2) do you have any suggestions on how to get the bottleneck tensors? I can get all the tensors for the network with graph.get_operations but I'm not sure if any or which of those are relevant.

    Thank you for your help!

    opened by justcho5 5
  • Question regarding directional derivative computation

    Question regarding directional derivative computation

    Hi, While working with tcav code after reading the related paper " Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV)" (https://arxiv.org/pdf/1711.11279.pdf), I had trouble understanding the computation of the directional derivative.

    From my understanding of the paper, 'Conceptual sensitivity' is measured by the directional derivative of logit values with respect to activations at the layer of interest. Thus for scoring you take into account the proportions of image with positive directional derivative.

    On the other hand in the code, as shown in the snippet below, sensitivity score seems to be the directional derivative of loss values with respect to activations at the layer of interest. https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/model.py#L54-L55

    As the loss is a function of the logits, the gradient we obtain in the code depends of the loss function we choose. In your case with cross entropy (snippet below) using the article's notation we have : CodeCogsEqn-1

    This leads to a change in magnitude ( which is not used is the score) but also in terms of sign. https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/model.py#L173-L178

    Though it seems that in the code you compensate the sign change by counting the number of negative gradients instead (last snippet). https://github.com/tensorflow/tcav/blob/c7f55108e26c66fef9d21754d4d697ed6337ddc3/tcav/tcav.py#L42-L60

    Have I misunderstood either the paper or the code ? Or is there a specific reason to use loss instead of logit, as you still obtain the same score by changing sign ? Thank you for your answer !

    opened by hugoych 5
  • Changes to random concept calculation and bug fixes

    Changes to random concept calculation and bug fixes

    Hello! As discussed previously, here is a pull request for some changes I've been working on.

    Change list

    • Files are now opened in binary mode for python3 compatibility
    • Raise ValueError on trying to run TCAV on one image. Things seem to break when this happens.
    • Remove transparency channel from images
    • Print results outputs summaries for multiple concepts, and optionally outputs a plot. See example below
    • Changed the way random scores are calculated. Instead of nominating a single random_counterpart to use as the positive set, all negative sets of images are used in turn as the positve set. This has a great effect on the mean of the random concept, however is very computationally expensive.
    • Removed random_counterpart arg for TCAV
    • Update tests for these changes

    I understand you may not want random_concept removed, I can re-add it. What effect should it have? Also, maybe the change to random concepts should be optional due to the extra computation time required.

    Another thing to look into here is to save computing time by noting that the TCAV score for random500_1 vs random500_0 should be the same as 1 - (random500_0 vs random500_1). I am currently unsure how to implement this however.

    Sample output from print_results can be seen below print_results

    opened by Gareth001 5
  • TCAV with TensorFlow Object Detection API models

    TCAV with TensorFlow Object Detection API models

    Hi, I run the repo without issues, and I was able to apply it to Keras models (image classification) successfully. Now I'm looking at how to apply it to Object Detection. But I'm pretty lost because the Object Detection API model is an SSDMetaArch file. If you use the *.pb file, don't provide access to backbone layers directly, and these layers are on Keras. Hence I can apply the Keras wrapper neither use one that follows a graph such as the examples provided in this repository. Any idea or suggestion on where I can start? Quickly add what I'm able to do:

    Get the Keras classification backbone of the Object detector model Get the bottleneck of this model Get the input tensor of this model I cannot pull the loss function from the model, but I can write one. What not being able to do;

    Get the prediction layer not sure if I need to get the prediction layer by individual bounding boxes I really appreciate any help you can provide. P.S. if more details or info is needed from my side. please let me know

    opened by emmanuelol 4
  • ImageNet BaseURL updated.

    ImageNet BaseURL updated.

    The links requested to ImageNet returned a 404 error. fix: The BaseURL doesn't contain "text" anymore. Also, the urls had extra "/r/n" at the end, which was truncated.

    opened by MatinTavakoli 4
  • Kernel crashing with an unknow reason

    Kernel crashing with an unknow reason

    I am trying to use tcav with my CNN keras model, but my kernel keeps crashing for an unknown reason when launching tcav.run(). After checking the code seems that the error is presenting when calling compute_tcav_score in this line of tcav.py

    i_up = self.compute_tcav_score( mymodel, target_class_for_compute_tcav_score, cav_concept, cav_instance, acts[target_class][cav_instance.bottleneck], activation_generator.get_examples_for_concept(target_class), run_parallel=run_parallel)

    The wrapper I have created for my keras model is the following:

    class KerasModelWrapper(model.ImageModelWrapper): """ ModelWrapper for keras models

        By default, assumes that your model contains one input node, one output head
    and one loss function.
    Computes gradients of the output layer in respect to a CAV.
    
    Args:
        sess: Tensorflow session we will use for TCAV.
        model_path: Path to your model.h5 file, containing a saved trained
          model.
        labels_path: Path to a file containing the labels for your problem. It
          requires a .txt file, where every line contains a label for your
          model. You want to make sure that the order of labels in this file
          matches with the logits layers for your model, such that file[i] ==
          model_logits[i]
    """
    
    def __init__(
        self,
        sess,
        model_path,
        labels_path,
        image_shape
    ):
        self.sess = sess
        self.model_name = 'cifar_CNN'
        super(KerasModelWrapper, self).__init__(image_shape)
        self.import_keras_model(model_path)
        self.labels = tf.io.gfile.GFile(labels_path).read().splitlines()
    
        # Construct gradient ops. Defaults to using the model's output layer
        self.y_input = tf.compat.v1.placeholder(tf.int64, shape=[None])
        self.loss = self.model.loss_functions[0](self.y_input,
                                                 self.model.outputs[0])
        self._make_gradient_tensors()
    
    def id_to_label(self, idx):
        return self.labels[idx]
    
    def label_to_id(self, label):
        return self.labels.index(label)
    
    def import_keras_model(self, saved_path):
        """Loads keras model, fetching bottlenecks, inputs and outputs."""
        self.ends = {}
        self.model = tf.keras.models.load_model(saved_path)
        self.get_bottleneck_tensors()
        self.get_inputs_and_outputs_and_ends()
    
    def get_bottleneck_tensors(self):
        self.bottlenecks_tensors = {}
        layers = self.model.layers
        for layer in layers:
            if 'input' not in layer.name:
                self.bottlenecks_tensors[layer.name] = layer.output
    
    def get_inputs_and_outputs_and_ends(self):
        self.ends['input'] = self.model.inputs[0]
        self.ends['prediction'] = self.model.outputs[0]
    

    I don't know if can help but from the log I can retrieve only this information before the crash F ./tensorflow/core/util/bcast.h:111] Check failed: vec.size() == NDIMS (1 vs. 2)

    What am I doing wrong?

    opened by francescobodria 4
  • google.protobuf.message.DecodeError: Error parsing message

    google.protobuf.message.DecodeError: Error parsing message

    TCAV library -- there's a problem when importing in utils.py. Particularly the line when importing the results_pb2 module. I fixed it by changing "from tcav_results.results_pb2..." to "...tcav.tcav_results_pb2...".

    Also there is an incompatibility with tf 2.0. I've tried by replacing tf. with tf.compat.v1. However, I then ran into a decode error, which i opened another issue on.

    In addition, i get this error: File "./tcav/tcav/model.py", line 318, in import_graph graph_def = tf.compat.v1.GraphDef.FromString(tf.compat.v1.gfile.Open(saved_path, 'rb').read()) google.protobuf.message.DecodeError: Error parsing message

    Do you know how I could resolve this problem? Thank you

    opened by justcho5 4
  • Bump pillow from 8.2.0 to 9.3.0

    Bump pillow from 8.2.0 to 9.3.0

    Bumps pillow from 8.2.0 to 9.3.0.

    Release notes

    Sourced from pillow's releases.

    9.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    9.3.0 (2022-10-29)

    • Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]

    • Initialize libtiff buffer when saving #6699 [radarhere]

    • Inline fname2char to fix memory leak #6329 [nulano]

    • Fix memory leaks related to text features #6330 [nulano]

    • Use double quotes for version check on old CPython on Windows #6695 [hugovk]

    • Remove backup implementation of Round for Windows platforms #6693 [cgohlke]

    • Fixed set_variation_by_name offset #6445 [radarhere]

    • Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]

    • Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]

    • Added ExifTags enums #6630 [radarhere]

    • Do not modify previous frame when calculating delta in PNG #6683 [radarhere]

    • Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]

    • Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]

    • Added GPS TIFF tag info #6661 [radarhere]

    • Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]

    • Do not attempt normalization if mode is already normal #6644 [radarhere]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump tensorflow from 2.5.1 to 2.9.3

    Bump tensorflow from 2.5.1 to 2.9.3

    Bumps tensorflow from 2.5.1 to 2.9.3.

    Release notes

    Sourced from tensorflow's releases.

    TensorFlow 2.9.3

    Release 2.9.3

    This release introduces several vulnerability fixes:

    TensorFlow 2.9.2

    Release 2.9.2

    This releases introduces several vulnerability fixes:

    ... (truncated)

    Changelog

    Sourced from tensorflow's changelog.

    Release 2.9.3

    This release introduces several vulnerability fixes:

    Release 2.8.4

    This release introduces several vulnerability fixes:

    ... (truncated)

    Commits
    • a5ed5f3 Merge pull request #58584 from tensorflow/vinila21-patch-2
    • 258f9a1 Update py_func.cc
    • cd27cfb Merge pull request #58580 from tensorflow-jenkins/version-numbers-2.9.3-24474
    • 3e75385 Update version numbers to 2.9.3
    • bc72c39 Merge pull request #58482 from tensorflow-jenkins/relnotes-2.9.3-25695
    • 3506c90 Update RELEASE.md
    • 8dcb48e Update RELEASE.md
    • 4f34ec8 Merge pull request #58576 from pak-laura/c2.99f03a9d3bafe902c1e6beb105b2f2417...
    • 6fc67e4 Replace CHECK with returning an InternalError on failing to create python tuple
    • 5dbe90a Merge pull request #58570 from tensorflow/r2.9-7b174a0f2e4
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Reproduce Fig.4. Zebra TCAV in googlenet from paper

    Reproduce Fig.4. Zebra TCAV in googlenet from paper

    I was wondering if it should be possible to reproduce the results from fig.4. from the TCAV-paper (Zebra TCAV in googlenet) using the NB tcav/Run_TCAV.ipynb?

    opened by gaunby 0
  • Bump protobuf from 3.10.0 to 3.18.3

    Bump protobuf from 3.10.0 to 3.18.3

    Bumps protobuf from 3.10.0 to 3.18.3.

    Release notes

    Sourced from protobuf's releases.

    Protocol Buffers v3.18.3

    C++

    Protocol Buffers v3.16.1

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.2

    Java

    • Improve performance characteristics of UnknownFieldSet parsing (#9371)

    Protocol Buffers v3.18.1

    Python

    • Update setup.py to reflect that we now require at least Python 3.5 (#8989)
    • Performance fix for DynamicMessage: force GetRaw() to be inlined (#9023)

    Ruby

    • Update ruby_generator.cc to allow proto2 imports in proto3 (#9003)

    Protocol Buffers v3.18.0

    C++

    • Fix warnings raised by clang 11 (#8664)
    • Make StringPiece constructible from std::string_view (#8707)
    • Add missing capability attributes for LLVM 12 (#8714)
    • Stop using std::iterator (deprecated in C++17). (#8741)
    • Move field_access_listener from libprotobuf-lite to libprotobuf (#8775)
    • Fix #7047 Safely handle setlocale (#8735)
    • Remove deprecated version of SetTotalBytesLimit() (#8794)
    • Support arena allocation of google::protobuf::AnyMetadata (#8758)
    • Fix undefined symbol error around SharedCtor() (#8827)
    • Fix default value of enum(int) in json_util with proto2 (#8835)
    • Better Smaller ByteSizeLong
    • Introduce event filters for inject_field_listener_events
    • Reduce memory usage of DescriptorPool
    • For lazy fields copy serialized form when allowed.
    • Re-introduce the InlinedStringField class
    • v2 access listener
    • Reduce padding in the proto's ExtensionRegistry map.
    • GetExtension performance optimizations
    • Make tracker a static variable rather than call static functions
    • Support extensions in field access listener
    • Annotate MergeFrom for field access listener
    • Fix incomplete types for field access listener
    • Add map_entry/new_map_entry to SpecificField in MessageDifferencer. They record the map items which are different in MessageDifferencer's reporter.
    • Reduce binary size due to fieldless proto messages
    • TextFormat: ParseInfoTree supports getting field end location in addition to start.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(0.2)
  • 0.2(Nov 21, 2018)

    This release has an API redesign that uses an ActivationGenerator class instead of the old tcav_helpers file. This simplies using TCAV with all different types of models with all different types of examples and ways of loading examples.

    Source code(tar.gz)
    Source code(zip)
  • 0.1(Nov 14, 2018)

Formulae is a Python library that implements Wilkinson's formulas for mixed-effects models.

formulae formulae is a Python library that implements Wilkinson's formulas for mixed-effects models. The main difference with other implementations li

34 Dec 21, 2022
Can a machine learning project be implemented to estimate the salaries of baseball players whose salary information and career statistics for 1986 are shared?

END TO END MACHINE LEARNING PROJECT ON HITTERS DATASET Can a machine learning project be implemented to estimate the salaries of baseball players whos

Pinar Oner 7 Dec 18, 2021
Penguins species predictor app is used to classify penguins species created using python's scikit-learn, fastapi, numpy and joblib packages.

Penguins Classification App Penguins species predictor app is used to classify penguins species using their island, sex, bill length (mm), bill depth

Siva Prakash 3 Apr 05, 2022
Backprop makes it simple to use, finetune, and deploy state-of-the-art ML models.

Backprop makes it simple to use, finetune, and deploy state-of-the-art ML models. Solve a variety of tasks with pre-trained models or finetune them in

Backprop 227 Dec 10, 2022
Python Machine Learning Jupyter Notebooks (ML website)

Python Machine Learning Jupyter Notebooks (ML website) Dr. Tirthajyoti Sarkar, Fremont, California (Please feel free to connect on LinkedIn here) Also

Tirthajyoti Sarkar 2.6k Jan 03, 2023
This is an implementation of the proximal policy optimization algorithm for the C++ API of Pytorch

This is an implementation of the proximal policy optimization algorithm for the C++ API of Pytorch. It uses a simple TestEnvironment to test the algorithm

Martin Huber 59 Dec 09, 2022
BigDL: Distributed Deep Learning Framework for Apache Spark

BigDL: Distributed Deep Learning on Apache Spark What is BigDL? BigDL is a distributed deep learning library for Apache Spark; with BigDL, users can w

4.1k Jan 09, 2023
Both social media sentiment and stock market data are crucial for stock price prediction

Relating-Social-Media-to-Stock-Movement-Public - We explore the application of Machine Learning for predicting the return of the stock by using the information of stock returns. A trading strategy ba

Vishal Singh Parmar 15 Oct 29, 2022
ml4ir: Machine Learning for Information Retrieval

ml4ir: Machine Learning for Information Retrieval | changelog Quickstart → ml4ir Read the Docs | ml4ir pypi | python ReadMe ml4ir is an open source li

Salesforce 77 Jan 06, 2023
Quantum Machine Learning

The Machine Learning package simply contains sample datasets at present. It has some classification algorithms such as QSVM and VQC (Variational Quantum Classifier), where this data can be used for e

Qiskit 364 Jan 08, 2023
Software Engineer Salary Prediction

Based on 2021 stack overflow data, this machine learning web application helps one predict the salary based on years of experience, level of education and the country they work in.

Jhanvi Mimani 1 Jan 08, 2022
A logistic regression model for health insurance purchasing prediction

Logistic_Regression_Model A logistic regression model for health insurance purchasing prediction This code is using these packages, so please make sur

ShawnWang 1 Nov 29, 2021
An open-source library of algorithms to analyse time series in GPU and CPU.

An open-source library of algorithms to analyse time series in GPU and CPU.

Shapelets 216 Dec 30, 2022
XGBoost-Ray is a distributed backend for XGBoost, built on top of distributed computing framework Ray.

XGBoost-Ray is a distributed backend for XGBoost, built on top of distributed computing framework Ray.

92 Dec 14, 2022
CVXPY is a Python-embedded modeling language for convex optimization problems.

CVXPY The CVXPY documentation is at cvxpy.org. We are building a CVXPY community on Discord. Join the conversation! For issues and long-form discussio

4.3k Jan 08, 2023
Visualize classified time series data with interactive Sankey plots in Google Earth Engine

sankee Visualize changes in classified time series data with interactive Sankey plots in Google Earth Engine Contents Description Installation Using P

Aaron Zuspan 76 Dec 15, 2022
PyTorch extensions for high performance and large scale training.

Description FairScale is a PyTorch extension library for high performance and large scale training on one or multiple machines/nodes. This library ext

Facebook Research 2k Dec 28, 2022
100 Days of Machine and Deep Learning Code

💯 Days of Machine Learning and Deep Learning Code MACHINE LEARNING TOPICS COVERED - FROM SCRATCH Linear Regression Logistic Regression K Means Cluste

Tanishq Gautam 66 Nov 02, 2022
As we all know the BGMI Loot Crate comes with so many resources for the gamers, this ML Crate will be the hub of various ML projects which will be the resources for the ML enthusiasts! Open Source Program: SWOC 2021 and JWOC 2022.

Machine Learning Loot Crate 💻 🧰 🔴 Welcome contributors! As we all know the BGMI Loot Crate comes with so many resources for the gamers, this ML Cra

Abhishek Sharma 89 Dec 28, 2022
Implementation of the Object Relation Transformer for Image Captioning

Object Relation Transformer This is a PyTorch implementation of the Object Relation Transformer published in NeurIPS 2019. You can find the paper here

Yahoo 158 Dec 24, 2022