Official implementation of Masksembles approach
Project description
Masksembles for Uncertainty Estimation
Project Page | Paper | Video Explanation
Why Masksembles?
Uncertainty Estimation is one of the most important and critical tasks in the area of modern neural networks and deep learning. There is a long list of potential applications of uncertainty: safety-critical applications, active learning, domain adaptation, reinforcement learning and etc.
Masksembles is a simple and easy-to-use drop-in method with performance on par with Deep Ensembles at a fraction of the cost. It makes almost no changes in your original model and requires only to add special intermediate layers.
Watch this video on YouTube
Installation
To install this package, use:
pip install masksembles
or
pip install git+http://github.com/nikitadurasov/masksembles
In addition, Masksembles requires installing at least one of the backends: torch or tensorflow2 / keras. Please follow official installation instructions for torch or tensorflow accordingly.
Usage
This package provides implementations for Masksembles{1|2|3}D layers in masksembles.{torch|keras}
where {1|2|3} refers to dimensionality of input tensors (1-, 2- and 3-dimensional
accordingly).
Masksembles1D: works with 1-dim inputs,[B, C]shaped tensorsMasksembles2D: works with 2-dim inputs,[B, H, W, C](keras) or[B, C, H, W](torch) shaped tensorsMasksembles3D: TBD
In a Nutshell, Masksembles applies binary masks to inputs via multiplying them both channel-wise. For more efficient
implementation we've followed approach similar to this one. Therefore, after inference
outputs[:B // N] - stores results for the first submodel, outputs[B // N : 2 * B // N] - for the second and etc.
Torch
import torch
from masksembles.torch import Masksembles1D
layer = Masksembles1D(10, 4, 2.)
layer(torch.ones([4, 10]))
tensor([[0., 1., 0., 0., 1., 0., 1., 1., 1., 1.],
[0., 0., 1., 1., 1., 1., 0., 0., 1., 1.],
[1., 0., 1., 1., 0., 0., 1., 0., 1., 1.],
[1., 0., 0., 1., 1., 1., 0., 1., 1., 0.]], dtype=torch.float64)
Tensorflow / Keras
import tensorflow as tf
from masksembles.keras import Masksembles1D
layer = Masksembles1D(4, 2.)
layer(tf.ones([4, 10]))
<tf.Tensor: shape=(4, 10), dtype=float32, numpy=
array([[0., 1., 1., 0., 1., 1., 1., 0., 1., 0.],
[0., 1., 0., 1., 1., 0., 1., 1., 0., 1.],
[1., 1., 1., 1., 0., 0., 1., 0., 0., 1.],
[1., 0., 0., 1., 0., 1., 1., 0., 1., 1.]], dtype=float32)>
Model example
import tensorflow as tf
from masksembles.keras import Masksembles1D, Masksembles2D
model = keras.Sequential(
[
keras.Input(shape=input_shape),
layers.Conv2D(32, kernel_size=(3, 3), activation="elu"),
Masksembles2D(4, 2.0),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="elu"),
Masksembles2D(4, 2.0),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
Masksembles1D(4, 2.),
layers.Dense(num_classes, activation="softmax"),
]
)
Citation
If you found this work useful for your projects, please don't forget to cite it.
@inproceedings{Durasov21,
author = {N. Durasov and T. Bagautdinov and P. Baque and P. Fua},
title = {{Masksembles for Uncertainty Estimation}},
booktitle = CVPR,
year = 2021
}
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file masksembles-1.1.1.tar.gz.
File metadata
- Download URL: masksembles-1.1.1.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec5efd043d57c560721278b660723d4c007673ab22f65ca0d1776d2aa5ce65c0
|
|
| MD5 |
61e8056090769ee91a2b972c80bef5ad
|
|
| BLAKE2b-256 |
251b0a8b3d46779ee0fe205a29f22690bbc6d320c1a0c368b00ffa7ca1e089a2
|
File details
Details for the file masksembles-1.1.1-py3-none-any.whl.
File metadata
- Download URL: masksembles-1.1.1-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e99955b81c61b7cfabe410c752cfbfe0d86c5e589e6bd358460192f4e25a7172
|
|
| MD5 |
4002c1db109c187ca2ee0866424fd457
|
|
| BLAKE2b-256 |
08308c10cd29bd7a01860cec56a65ec9fc3113738bebda7323be2da586217833
|