A tensorflow implementation of Conditionals for Ordinal Regression
Project description
Condor Ordinal regression in Tensorflow Keras
Tensorflow Keras implementation of CONDOR Ordinal Regression (aka ordinal classification) by Garrett Jenkinson et al (2021).
CONDOR is compatible with any state-of-the-art deep neural network architecture, requiring only modification of the output layer, the labels, and the loss function. Read our full documentation to learn more.
We also have implemented CONDOR for pytorch.
This package includes:
- Ordinal tensorflow loss function:
CondorOrdinalCrossEntropy
- Ordinal tensorflow error metric:
OrdinalMeanAbsoluteError
- Ordinal tensorflow error metric:
OrdinalEarthMoversDistance
- Ordinal tensorflow sparse loss function:
CondorSparseOrdinalCrossEntropy
- Ordinal tensorflow sparse error metric:
SparseOrdinalMeanAbsoluteError
- Ordinal tensorflow sparse error metric:
SparseOrdinalEarthMoversDistance
- Ordinal tensorflow activation function:
ordinal_softmax
- Ordinal sklearn label encoder:
CondorOrdinalEncoder
Installation
Install the stable version via pip:
pip install condor-tensorflow
Alternatively install the most recent code on GitHub via pip:
pip install git+https://github.com/GarrettJenkinson/condor_tensorflow/
condor_tensorflow
should now be available for use as a Python library.
Docker container
As an alternative to the above, we provide a convenient Dockerfile that will build a container with condor_tensorflow
along with all of its dependencies (Python 3.6+, Tensorflow 2.2+, sklearn, numpy).
This can be used as follows:
# Clone this git repository
git clone https://github.com/GarrettJenkinson/condor_tensorflow/
# Change directory to the cloned repository root
cd condor_tensorflow
# Create a docker image
docker build -t cpu_tensorflow -f cpu.Dockerfile ./
# run image to serve a jupyter notebook
docker run -it -p 8888:8888 --rm cpu_tensorflow
# how to run bash inside container (with Python that will have required dependencies available)
docker run -u $(id -u):$(id -g) -it -p 8888:8888 --rm cpu_tensorflow bash
Assuming a GPU enabled machine with NVIDIA drivers installed replace cpu
above with gpu
.
Example
This is a quick example to show basic model implementation syntax.
Example assumes existence of input data (variable 'X') and ordinal labels (variable 'labels').
import tensorflow as tf
import condor_tensorflow as condor
NUM_CLASSES = 5
# Ordinal 'labels' variable has 5 labels, 0 through 4.
enc_labs = condor.CondorOrdinalEncoder(nclasses=NUM_CLASSES).fit_transform(labels)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(32, activation = "relu"))
model.add(tf.keras.layers.Dense(NUM_CLASSES-1)) # Note the "-1"
model.compile(loss = condor.CondorOrdinalCrossEntropy(),
metrics = [condor.OrdinalMeanAbsoluteError()])
model.fit(x = X, y = enc_labs)
See this colab notebook for extended examples of ordinal regression with MNIST and Amazon reviews (universal sentence encoder).
Please post any issues to the issue queue.
Acknowledgments: Many thanks to the CORAL ordinal authors and the CORAL pytorch authors whose repos provided a roadmap for this codebase.
References
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file condor_tensorflow-1.0.1.tar.gz
.
File metadata
- Download URL: condor_tensorflow-1.0.1.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 202aa187bffa5ca4f617c0452c684cf819d7f7043b4d6015369b35ebd7905d8c |
|
MD5 | 950ef68d281b9b97a9fc68688f71c4dc |
|
BLAKE2b-256 | cc1467cc0da0796e793c54842242636738de69c72fe6b6bc6b801e08aef4d94b |
File details
Details for the file condor_tensorflow-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: condor_tensorflow-1.0.1-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73e6a1cb71cb7fde2b6645eb974a4c05e365d9ef7f5c6c59f83feccb6b6476e8 |
|
MD5 | 95d527f037e3013a8cb9a7ca4038f8d5 |
|
BLAKE2b-256 | bc2076e2e39b69b4e51eacb35a3552f3b9bc8d60c0cf566e3ea2c1166aef7e64 |