Skip to main content

PyTorch implementation of ThriftyNet by Guillaume Coiffier, Ghouthi Boukli Hacene, and Vincent Gripon.

Project description

Thrifty Networks

Installation

pip install thriftynet

Usage

You can use the encoder only:

from thriftynet import ThriftyEncoder

encoder = ThriftyEncoder(
    filters=128,
    iterations=20,
    kernel_size=3,
    normalization="layer"
)
images = torch.randn(1, 3, 224, 224)
features = encoder(images)
print(features.size(1)) # prints 128

Alternatively initialize a network with a classification head:

from thriftynet import ThriftyNetwork

encoder = ThriftyNetwork(
    100,
    filters=128,
    iterations=20,
    kernel_size=3,
    normalization="layer"
)
images = torch.randn(1, 3, 224, 224)
features = encoder(images)
print(features.size(1)) # prints 100

Abstract

Typical deep convolutional architectures present an increasing number of feature maps as we go deeper in the network, whereas spatial resolution of inputs is decreased through downsampling operations. This means that most of the parameters lay in the final layers, while a large portion of the computations are performed by a small fraction of the total parameters in the first layers.

In an effort to use every parameter of a network at its maximum, we propose a new convolutional neural network architecture, called ThriftyNet. In ThriftyNet, only one convolutional layer is defined and used recursively, leading to a maximal parameter factorization.

In complement, normalization, non-linearities, downsamplings and shortcut ensure sufficient expressivity of the model. ThriftyNet achieves competitive performance on a tiny parameters budget, exceeding 91% accuracy on CIFAR-10 with less than 40K parameters in total, and 74.3% on CIFAR-100 with less than 600K parameters.

Results

Citation

@misc{2007.10106,
    Author = {Guillaume Coiffier and Ghouthi Boukli Hacene and Vincent Gripon},
    Title = {ThriftyNets : Convolutional Neural Networks with Tiny Parameter Budget},
    Year = {2020},
    Eprint = {arXiv:2007.10106},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thriftynet-0.0.1.tar.gz (537.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thriftynet-0.0.1-py3-none-any.whl (534.2 kB view details)

Uploaded Python 3

File details

Details for the file thriftynet-0.0.1.tar.gz.

File metadata

  • Download URL: thriftynet-0.0.1.tar.gz
  • Upload date:
  • Size: 537.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for thriftynet-0.0.1.tar.gz
Algorithm Hash digest
SHA256 cb1f9bc4555e2c64d97b3b723025e61f5131ce8a1d81e866890a8b8cc55b2590
MD5 e802e752c0dafb1827cd6560421c8645
BLAKE2b-256 4e1f22d2e2019a25b7cb63a2b7c33bca304bd740efd5f2327459af0d3616cb0c

See more details on using hashes here.

File details

Details for the file thriftynet-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: thriftynet-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 534.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for thriftynet-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4065889f77d4bc60e4c87b989a92685c6a50a80261a9d9377538444a2373d9f3
MD5 dd3f096f7abab356b35617c2ee53f014
BLAKE2b-256 fcab62d6946a76e364db32c677eea01c7ad3f9e9af54daf2448b7c3ae23ac7f9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page