TensorFlow port of PyTorch Image Models (timm) - image models with pretrained weights.

Overview

TensorFlow-Image-Models

Introduction

TensorfFlow-Image-Models (tfimm) is a collection of image models with pretrained weights, obtained by porting architectures from timm to TensorFlow. The hope is that the number of available architectures will grow over time. For now, it contains vision transformers (ViT, DeiT and Swin Transformers) and ResNets.

This work would not have been possible wihout Ross Wightman's timm library and the work on PyTorch/TensorFlow interoperability in HuggingFace's transformer repository. I tried to make sure all source material is acknowledged. Please let me know if I have missed something.

Usage

Installation

The package can be installed via pip,

pip install tfimm

To load pretrained weights, timm needs to be installed. This is an optional dependency and can be installed via

pip install tfimm[timm]

Creating models

To load pretrained models use

import tfimm

model = tfimm.create_model("vit_tiny_patch16_224", pretrained="timm")

We can list available models with pretrained weights via

import tfimm

print(tfimm.list_models(pretrained="timm"))

Most models are pretrained on ImageNet or ImageNet-21k. If we want to use them for other tasks we need to change the number of classes in the classifier or remove the classifier altogether. We can do this by setting the nb_classes parameter in create_model. If nb_classes=0, the model will have no classification layer. If nb_classes is set to a value different from the default model config, the classification layer will be randomly initialized, while all other weights will be copied from the pretrained model.

The preprocessing function for each model can be created via

import tensorflow as tf
import tfimm

preprocess = tfimm.create_preprocessing("vit_tiny_patch16_224", dtype="float32")
img = tf.ones((1, 224, 224, 3), dtype="uint8")
img_preprocessed = preprocess(img)

Saving and loading models

All models are subclassed from tf.keras.Model (they are not functional models). They can still be saved and loaded using the SavedModel format.

>> type(model) >>> model.save("/tmp/my_model") >>> loaded_model = tf.keras.models.load_model("/tmp/my_model") >>> type(loaded_model) ">
>>> import tesnorflow as tf
>>> import tfimm
>>> model = tfimm.create_model("vit_tiny_patch16_224")
>>> type(model)

     
      
>>> model.save("/tmp/my_model")
>>> loaded_model = tf.keras.models.load_model("/tmp/my_model")
>>> type(loaded_model)

      

      
     

For this to work, the tfimm library needs to be imported before the model is loaded, since during the import process, tfimm is registering custom models with Keras. Otherwise, we obtain the following output

>> type(loaded_model) ViT'> ">
>>> import tensorflow as tf
>>> loaded_model = tf.keras.models.load_model("/tmp/my_model")
>>> type(loaded_model)

    
     ViT'>

    

Models

The following architectures are currently available:

Profiling

To understand how big each of the models is, I have done some profiling to measure

  • maximum batch size that fits in GPU memory and
  • throughput in images/second for both inference and backpropagation on K80 and V100 GPUs. For V100, measurements were done for both float32 and mixed precision.

The results can be found in the results/profiling_{k80, v100}.csv files.

For backpropagation, we use as loss the mean of model outputs

def backprop():
    with tf.GradientTape() as tape:
        output = model(x, training=True)
        loss = tf.reduce_mean(output)
        grads = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(grads, model.trainable_variables))

License

This repository is released under the Apache 2.0 license as found in the LICENSE file.

Comments
  • Call new layer on the last layer of create_model object using Functional API

    Call new layer on the last layer of create_model object using Functional API

    Hi. First, I want to say that I enjoy this library a lot! Thank you @martinsbruveris for creating it!

    I have a question: I want create a model body using create_model function and add my own classification head. In classification head I want to add another input layer to additional features, call a concatenate layer on last layer of the create_model object and new input layer, and add final dense layer. Since create_model object is not a Sequential or Functional model object, is there any way I can do that? I tried using 'model_tfimm.output' or 'model_tfimm.layers[-1].output' calls, because .output call works with Tensorflow models, but it does not seem to work with tfimm models:

    dense_1 = tf.keras.layers.Dense(512, activation='relu', name='dense_1')(model_tfimm.layers[-1].output)
    
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    v:\Git\spellbook\magicClassification.py in <module>
    ----> 1 dense_1 = tf.keras.layers.Dense(512, activation='relu', name='dense_1')(model_tfimm.layers[-1].output)
    
    ~\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\base_layer.py in output(self)
      2094     """
      2095     if not self._inbound_nodes:
    -> 2096       raise AttributeError('Layer ' + self.name + ' has no inbound nodes.')
      2097     return self._get_node_attribute_at_index(0, 'output_tensors', 'output')
      2098 
    
    AttributeError: Layer activation_72 has no inbound nodes.
    
    model_tfimm.output
    
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    v:\Git\spellbook\magicClassification.py in <module>
    ----> 1 model_tfimm.output
    
    ~\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\base_layer.py in output(self)
       2094     """
       2095     if not self._inbound_nodes:
    -> 2096       raise AttributeError('Layer ' + self.name + ' has no inbound nodes.')
       2097     return self._get_node_attribute_at_index(0, 'output_tensors', 'output')
       2098 
    
    AttributeError: Layer conv_ne_xt_1 has no inbound nodes.
    

    Using Tensorflow Functional API this would like something like this:

    model_tfimm = tfimm.create_model(TFIMM_MODEL_NAME, nb_classes=0, pretrained="timm")
    feature_extractor = model_tfimm.output
    
    add_input = tf.keras.layers.Input(shape=(NUM_ADD_FEATURES, ), name='input_features_layer')
    concat_layer = tf.keras.layers.Concatenate(name='concat_features')([feature_extractor, add_input])
    
    predictions = tf.keras.layers.Dense(NUM_CLASSES, activation=OUTPUT_ACTIVATION)(concat_layer)
    
    model = tf.keras.Model(inputs=[model_tfimm.input, add_input], outputs=predictions)
    

    Any ideas?

    opened by ztsv-av 7
  • Just want to ask a question for education purposes... hope it's okay!

    Just want to ask a question for education purposes... hope it's okay!

    Hi, this library is great. I'm wondering, maybe you can tell me this with your experience, what would be your small-list of the "top" essentials of a state-of-art image model these days? Data augmentation of course (mixup?), regularization (layer norm?), EMA, weight decay... I want to get a minimalist competitive ImageNet model working.

    opened by slerman12 5
  • Error while importing tfimm library

    Error while importing tfimm library

    Problem:

    When I try to install and import tfimm packages:

    !pip install tfimm import tfimm

    This error occurs:

    ---------------------------------------------------------------------------
    RuntimeError                              Traceback (most recent call last)
    RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
    
    ---------------------------------------------------------------------------
    ImportError                               Traceback (most recent call last)
    /tmp/ipykernel_42/1172421075.py in <module>
          3 get_ipython().system('pip install timm')
          4 import timm
    ----> 5 import tfimm
    
    /opt/conda/lib/python3.7/site-packages/tfimm/__init__.py in <module>
    ----> 1 from . import architectures  # noqa: F401
          2 from .models.factory import create_model, create_preprocessing  # noqa: F401
          3 from .models.registry import list_models  # noqa: F401
          4 from .utils import (  # noqa: F401
          5     cached_model_path,
    
    /opt/conda/lib/python3.7/site-packages/tfimm/architectures/__init__.py in <module>
    ----> 1 from .cait import *  # noqa: F401
          2 from .convmixer import *  # noqa: F401
          3 from .convnext import *  # noqa: F401
          4 from .mlp_mixer import *  # noqa: F401
          5 from .pit import *  # noqa: F401
    
    /opt/conda/lib/python3.7/site-packages/tfimm/architectures/cait.py in <module>
         15 from typing import List, Tuple
         16 
    ---> 17 import tensorflow as tf
         18 
         19 from tfimm.layers import (
    
    /opt/conda/lib/python3.7/site-packages/tensorflow/__init__.py in <module>
         35 import typing as _typing
         36 
    ---> 37 from tensorflow.python.tools import module_util as _module_util
         38 from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader
         39 
    
    /opt/conda/lib/python3.7/site-packages/tensorflow/python/__init__.py in <module>
         35 
         36 from tensorflow.python import pywrap_tensorflow as _pywrap_tensorflow
    ---> 37 from tensorflow.python.eager import context
         38 
         39 # pylint: enable=wildcard-import
    
    /opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/context.py in <module>
         33 from tensorflow.python import pywrap_tfe
         34 from tensorflow.python import tf2
    ---> 35 from tensorflow.python.client import pywrap_tf_session
         36 from tensorflow.python.eager import executor
         37 from tensorflow.python.eager import monitoring
    
    /opt/conda/lib/python3.7/site-packages/tensorflow/python/client/pywrap_tf_session.py in <module>
         17 # pylint: disable=invalid-import-order,g-bad-import-order, wildcard-import, unused-import
         18 from tensorflow.python import pywrap_tensorflow
    ---> 19 from tensorflow.python.client._pywrap_tf_session import *
         20 from tensorflow.python.client._pywrap_tf_session import _TF_SetTarget
         21 from tensorflow.python.client._pywrap_tf_session import _TF_SetConfig
    
    ImportError: SystemError: <built-in method __contains__ of dict object at 0x7f9744ee7280> returned a result with an error set
    

    Desktop Environment:

    • OS: Xubuntu 20.04
    • Browser: Mozilla Firefox
    • Device: Cloud VMs Kaggle = TPU v3-8 Core
    • TF Latest Version with CUDA Latest Version
    • NumPy == 1.21.5

    Question

    In other repositories I have found that upgrading NumPy solves the problem. But my NumPy has the latest version. Can anyone please help me to solve this error?

    opened by iftiben10 5
  • Learning rate schedule is now a config class

    Learning rate schedule is now a config class

    To avoid to over parametrise the learning rate schedule class I propose to make them serializable objects. This is also related to https://github.com/martinsbruveris/tensorflow-image-models/discussions/38

    opened by hyenal 4
  • Incompatible shapes: [4] vs. [4,196] during finetuning ViT

    Incompatible shapes: [4] vs. [4,196] during finetuning ViT

    Hi, I was building a model using ViT by iterating through the layers, but got error Incompatible shapes: [4] vs. [4,196] when I call model.fit. Any ideas where the mismatch is happening? or it would be grateful if you guide me how to debug it (I am new to tensorflow). Here is the function for building a ViT model for finetuning.

    def get_model(img_size=config.IMAGE_SIZE):
        with strategy.scope():
            inp = tf.keras.layers.Input(shape = [img_size, img_size, 3], name = 'inp1')
            label = tf.keras.layers.Input(shape = (), name = 'inp2')
    
            vit_model = tfimm.create_model("vit_base_patch16_224_miil_in21k", pretrained="timm",nb_classes=0)
    
            x = inp
            for layer in vit_model.layers:
                x = layer(x)
    
                # Some modification will be made here playing with x
    
    
            x = tf.keras.layers.Dense(config.N_CLASSES)(x)
            output = tf.keras.layers.Softmax(dtype='float32')(x)
            model = tf.keras.models.Model(inputs = [inp, label], outputs = [output])
            
            opt = tf.keras.optimizers.Adam(learning_rate = config.LR)
    
            model.compile(
                optimizer = opt,
                loss = [tf.keras.losses.SparseCategoricalCrossentropy()],
                metrics = [tf.keras.metrics.SparseCategoricalAccuracy(),tf.keras.metrics.SparseTopKCategoricalAccuracy(k=5)]
            )
    
        return model
    
    opened by lorenzo-park 3
  • [FEATURE REQUEST] EfficientNet models

    [FEATURE REQUEST] EfficientNet models

    Is there any plan to add efficientnet V1x or V2x models ? I know implementations can be found in the keras module itself but adding these models would make this library trully the equivalent of ross's pytorch-image-models.

    opened by benihime91 2
  • Cannot install tfimm via pip

    Cannot install tfimm via pip

    Good day, I tried to install tfimm via pip but I got the following error.

    ERROR: Could not find a version that satisfies the requirement tfimm( from version: None) ERROR: No matching distribution found for tfimm

    Is that a problem because I have not installed another packages?

    opened by hailuu684 2
  • automatic sweep registration

    automatic sweep registration

    Remove the need for manually specifying whether we are using a W&B sweep or not. Also linked to this idea https://github.com/martinsbruveris/tensorflow-image-models/discussions/36

    opened by hyenal 2
  • Cannot load model with `create_model` function (potential conflict with keras)

    Cannot load model with `create_model` function (potential conflict with keras)

    Right now I am using my own copy of vit_base_patch32_224_in21k. I am trying to initialize the model using tfimm.create_model. I am trying to load the model using the following:

    import tfimm
    tfimm.create_model(model_name='vit_base_patch32_224_in21k', model_path ='/my/model/path/vit_base_patch32_224_in21k/', input_shape=(224,224))
    

    This results in

      File "/etc/pyenv/versions/3.8.6/lib/python3.8/site-packages/tfimm/models/factory.py", line 45, in create_model
        loaded_model = tf.keras.models.load_model(model_path)
      File "/etc/pyenv/versions/3.8.6/lib/python3.8/site-packages/keras/utils/traceback_utils.py", line 67, in error_handler
        raise e.with_traceback(filtered_tb) from None
      File "/etc/pyenv/versions/3.8.6/lib/python3.8/site-packages/tfimm/models/serialization.py", line 81, in from_config
        _cfg = cfg_class(**_cfg)
    TypeError: __init__() got an unexpected keyword argument 'in_chans'
    

    Note that I am using tfimm==0.2.1 and everything worked very well with 0.1.5. In addition the following code work:

    import tensorflow as tf
    tf.keras.models.load_model('/my/model/path/vit_base_patch32_224_in21k/')
    
    opened by hyenal 2
  • add more verbosity to error message

    add more verbosity to error message

    It's a very small PR but it addresses an issue I had recently. I would like to add more verbosity to the error message for config file. Then the user would be aware of the faulty arguments.

    opened by hyenal 1
  • Adding convnext edge models

    Adding convnext edge models

    Many versions of ConvNeXt are now available pretrained in timm.

    To be able to load them in tfimm, the only code to add in: https://github.com/martinsbruveris/tensorflow-image-models/blob/b6742e455fe0d9a550f829917a8cef68000831b5/tfimm/architectures/convnext.py#L439

    Would be the following:

    @register_model
    def convnext_atto():
        cfg = ConvNeXtConfig(
            name="convnext_atto",
            url="[timm]",
            embed_dim=(40, 80, 160, 320),
            nb_blocks=(2, 2, 6, 2),
        )
        return ConvNeXt, cfg
    
    @register_model
    def convnext_femto():
        cfg = ConvNeXtConfig(
            name="convnext_femto",
            url="[timm]",
            embed_dim=(48,  96,  192,  384),
            nb_blocks=(2, 2, 6, 2),
        )
        return ConvNeXt, cfg
    
    @register_model
    def convnext_pico():
        cfg = ConvNeXtConfig(
            name="convnext_pico",
            url="[timm]",
            embed_dim=(64, 128,  256,  512),
            nb_blocks=(2, 2, 6, 2),
        )
        return ConvNeXt, cfg
    
    @register_model
    def convnext_nano():
        cfg = ConvNeXtConfig(
            name="convnext_nano",
            url="[timm]",
            embed_dim=(80, 160,  320,  640),
            nb_blocks=(2, 2, 8, 2),
        )
        return ConvNeXt, cfg
    

    I've tested it locally and it works perfectly. Thanks in advance

    opened by scrouzet 0
  • New feature: Loading weights of fine-tuned timm model to keras

    New feature: Loading weights of fine-tuned timm model to keras

    So far, tfimm allows to create and initialize keras models using default timm weights as follows: tfimm.create_model(TIMM_MODEL_NAME, pretrained="timm")

    It is also useful to be able to load a fine-tuned timm model. This is what I implemented and would like to see in the future releases. I also added a Jupyter notebook to demonstrate usage.

    opened by Alkhaddour 0
  • PVT model not training..

    PVT model not training..

    Describe the bug PVT model does not train.

    To Reproduce Steps to reproduce the behaviour:

    import tfimm 
    import tensorflow_datasets as tfds
    import tensorflow as tf
    
    def resize_normalize(x, y):
        x = tf.image.resize(x, (224, 224)) / 255
        return x, y
    
    train_ds = tfds.load('imagenet_v2', 
                   split='test', 
                   as_supervised=True)
    train_ds = train_ds.map(resize_normalize).batch(32)
    
    model = tfimm.create_model("pvt_tiny", pretrained=None)
    
    model.compile(optimizer=tf.keras.optimizers.Adam(1e-3), loss="sparse_categorical_crossentropy", metrics=["accuracy"])
    model.fit(train_ds)
    
    Epoch 1/5
    313/313 [==============================] - 67s 187ms/step - loss: 15.6424 - accuracy: 6.0000e-04
    Epoch 2/5
    313/313 [==============================] - 60s 191ms/step - loss: 16.2130 - accuracy: 0.0010
    Epoch 3/5
    313/313 [==============================] - 60s 191ms/step - loss: 16.2144 - accuracy: 0.0010
    Epoch 4/5
    313/313 [==============================] - 60s 191ms/step - loss: 16.2418 - accuracy: 0.0010
    Epoch 5/5
    313/313 [==============================] - 60s 191ms/step - loss: 16.2417 - accuracy: 0.0010
    

    Expected behaviour Convergance of model

    Desktop (please complete the following information):

    • OS: Windows 11
    • Repo version: 0.2.7
    • TensorFlow version with CUDA/cuDNN [e.g. TF 2.9.1 with CUDA 11.2]

    Also note that setting the LR to 1e-4 as the paper does not solve the problem.

    opened by ma7555 0
Releases(v0.2.9)
  • v0.2.9(Oct 28, 2022)

  • v0.2.8(Sep 5, 2022)

  • v0.2.7(Jun 14, 2022)

  • v0.2.6(May 13, 2022)

  • v0.2.5(Feb 21, 2022)

  • v0.2.4(Jan 31, 2022)

  • v0.2.3(Jan 20, 2022)

  • v0.2.2(Jan 17, 2022)

  • v0.2.1(Jan 7, 2022)

  • v0.2.0(Jan 3, 2022)

    Added some models and a first version of a training framework.

    • Added hybrid Vision Transformers (vit_hybrid).
    • Added resnetv2 module, which inlcudes Big Transfer (BiT) resnets.
    • Added Pyramid Vision Transformer models
    • Added first version of training framework (tfimm/train). Still work in progress. Possibly buggy.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.5(Dec 12, 2021)

    Various improvements to the library without adding new models

    • Added option for models to return intermediate features via return_features parameter
    • Added DropPath regularization to vit module (stochastic depth)
    • Added ability to load saved models from a local cache
    Source code(tar.gz)
    Source code(zip)
  • v0.1.4(Dec 8, 2021)

  • v0.1.3(Dec 7, 2021)

    Added more transformer architectures and ResNet models

    • Added CaiT models
    • Added MLP-Mixer, ResMLP and gMLP models
    • Added ResNet models
    • Fixed bug with Swin Transformer and mixed precision
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Nov 25, 2021)

    Some new architectures and minor change to dependencies.

    • Reduced TF version requirement from 2.5 to 2.4.
    • Added ConvMixer models
    • Added Swin Transformer models
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Nov 21, 2021)

    Mostly small changes.

    • Refactored code in resnet.py.
    • Added create_preprocessing function to generate model-specific preprocessing.
    • Added profiling results (max batch size and throughput for inference and backpropagation) for K80 and V100 (float32 and mixed precision) GPUs.
    • Fixed bug with ViT models and mixed precision.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Nov 17, 2021)

Owner
Martins Bruveris
Senior applied scientist at Onfido applying deep learning to computer vision problems
Martins Bruveris
PyTorch implementation of VAGAN: Visual Feature Attribution Using Wasserstein GANs

Prototypical Networks for Few shot Learning in PyTorch Simple alternative Implementation of Prototypical Networks for Few Shot Learning (paper, code)

Orobix 93 Aug 17, 2022
Receptive Field Block Net for Accurate and Fast Object Detection, ECCV 2018

Receptive Field Block Net for Accurate and Fast Object Detection By Songtao Liu, Di Huang, Yunhong Wang Updatas (2021/07/23): YOLOX is here!, stronger

Liu Songtao 1.4k Dec 21, 2022
Trying to understand alias-free-gan.

alias-free-gan-explanation Trying to understand alias-free-gan in my own way. [Chinese Version δΈ­ζ–‡η‰ˆζœ¬] CC-BY-4.0 License. Tzu-Heng Lin motivation of thi

Tzu-Heng Lin 12 Mar 17, 2022
Non-Vacuous Generalisation Bounds for Shallow Neural Networks

This package requires jax, tensorflow, and numpy. Either tensorflow or scikit-learn can be used for loading data. To run in a nix-shell with required

Felix Biggs 0 Feb 04, 2022
The repository contains reproducible PyTorch source code of our paper Generative Modeling with Optimal Transport Maps, ICLR 2022.

Generative Modeling with Optimal Transport Maps The repository contains reproducible PyTorch source code of our paper Generative Modeling with Optimal

Litu Rout 30 Dec 22, 2022
CondNet: Conditional Classifier for Scene Segmentation

CondNet: Conditional Classifier for Scene Segmentation Introduction The fully convolutional network (FCN) has achieved tremendous success in dense vis

ycszen 31 Jul 22, 2022
A large-scale face dataset for face parsing, recognition, generation and editing.

CelebAMask-HQ [Paper] [Demo] CelebAMask-HQ is a large-scale face image dataset that has 30,000 high-resolution face images selected from the CelebA da

switchnorm 1.7k Dec 26, 2022
EssentialMC2 Video Understanding

EssentialMC2 Introduction EssentialMC2 is a complete system to solve video understanding tasks including MHRL(representation learning), MECR2( relatio

Alibaba 106 Dec 11, 2022
Permute Me Softly: Learning Soft Permutations for Graph Representations

Permute Me Softly: Learning Soft Permutations for Graph Representations

Giannis Nikolentzos 7 Jul 10, 2022
Unsupervised phone and word segmentation using dynamic programming on self-supervised VQ features.

Unsupervised Phone and Word Segmentation using Vector-Quantized Neural Networks Overview Unsupervised phone and word segmentation on speech data is pe

Herman Kamper 13 Dec 11, 2022
Cortex-compatible model server for Python and TensorFlow

Nucleus model server Nucleus is a model server for TensorFlow and generic Python models. It is compatible with Cortex clusters, Kubernetes clusters, a

Cortex Labs 14 Nov 27, 2022
Scales, Chords, and Cadences: Practical Music Theory for MIR Researchers

ISMIR-musicTheoryTutorial This repository has slides and Jupyter notebooks for the ISMIR 2021 tutorial Scales, Chords, and Cadences: Practical Music T

Johanna Devaney 58 Oct 11, 2022
An end-to-end image translation model with weight-map for color constancy

CCUnet An end-to-end image translation model with weight-map for color constancy 1. Download the dataset (take Colorchecker_recommended dataset as an

Jianhui Qiu 1 Dec 21, 2021
Editing a classifier by rewriting its prediction rules

This repository contains the code and data for our paper: Editing a classifier by rewriting its prediction rules Shibani Santurkar*, Dimitris Tsipras*

Madry Lab 86 Dec 27, 2022
RL Algorithms with examples in Python / Pytorch / Unity ML agents

Reinforcement Learning Project This project was created to make it easier to get started with Reinforcement Learning. It now contains: An implementati

Rogier Wachters 3 Aug 19, 2022
Single-Shot Motion Completion with Transformer

Single-Shot Motion Completion with Transformer πŸ‘‰ [Preprint] πŸ‘ˆ Abstract Motion completion is a challenging and long-discussed problem, which is of gr

FuxiCV 78 Dec 29, 2022
Code of Periodic Activation Functions Induce Stationarity

Periodic Activation Functions Induce Stationarity This repository is the official implementation of the methods in the publication: L. Meronen, M. Tra

AaltoML 12 Jun 07, 2022
A PyTorch Toolbox for Face Recognition

FaceX-Zoo FaceX-Zoo is a PyTorch toolbox for face recognition. It provides a training module with various supervisory heads and backbones towards stat

JDAI-CV 1.6k Jan 06, 2023
A PyTorch implementation of a Factorization Machine module in cython.

fmpytorch A library for factorization machines in pytorch. A factorization machine is like a linear model, except multiplicative interaction terms bet

Jack Hessel 167 Jul 06, 2022
Codebase for Diffusion Models Beat GANS on Image Synthesis.

Codebase for Diffusion Models Beat GANS on Image Synthesis.

Katherine Crowson 128 Dec 02, 2022