pidgan

GAN-based models to flash-simulate the LHCb PID detectors

GPL-3.0 License

Downloads
310
Stars
3
Committers
2

Bot releases are hidden (Show)

pidgan - PIDGAN v0.2.0 Latest Release

Published by mbarbetti 4 months ago

What is PIDGAN?

PIDGAN is a Python package built upon TensorFlow 2 to provide ready-to-use implementations for several GAN algorithms (listed in this table). The package was originally designed to simplify the training and optimization of GAN-based models for the Particle Identification (PID) system of the LHCb experiment. Today, PIDGAN is a versatile package that can be employed in a wide range of High Energy Physics (HEP) applications and, in general, whenever one has anything to do with tabular data and aims to learn the conditional probability distributions of a set of target features. This package is one of the building blocks to define a Flash Simulation framework of the LHCb experiment.

List of available modules

  • algorithms
    • BceGAN-ALP [k2/k3] - 🧩
    • BceGAN-GP [k2/k3] - 🧩
    • BceGAN [k2/k3] - 🧩
    • CramerGAN [k2/k3] - 🧩
    • GAN [k2/k3] - 🆙
    • lipschitz-regularizations [k2/k3] - 🆙
    • LSGAN [k2/k3] - 🧩
    • WGAN-ALP [k2/k3] - 🧩
    • WGAN-GP [k2/k3] - 🆙
    • WGAN [k2/k3] - 🧩
  • callbacks
    • schedulers
      • LearnRateBaseScheduler [k2/k3] - 🆙
      • LearnRateCosineDecay [k2/k3] - 🐛
      • LearnRateExpDecay [k2/k3]
      • LearnRateInvTimeDecay [k2/k3]
      • LearnRatePiecewiseConstDecay [k2/k3]
      • LearnRatePolynomialDecay [k2/k3]
  • metrics
    • Accuracy [k2/k3] - 🧩
    • BaseMetric [k2/k3] - 🆙
    • BinaryCrossentropy [k2/k3] - 🧩
    • JSDivergence [k2/k3] - 🧩
    • KLDivergence [k2/k3] - 🧩
    • MeanAbsoluteError [k2/k3] - 🧩
    • MeanSquaredError [k2/k3] - 🧩
    • RootMeanSquaredError [k2/k3] - 🧩
    • WassertsteinDistance [k2/k3] - 🧩
  • optimization
    • callbacks
      • HopaasPruner [src]
    • scores
      • BaseScore [src]
      • EMDistance [src]
      • KSDistance [src]
  • players
    • classifiers
      • AuxClassifier [src] - 🧩
      • AuxMultiClassifier [src] - 🧩
      • Classifier [src] - 🧩
      • MultiClassifier [src] - 🧩
      • ResClassifier [src] - 🧩
      • ResMultiClassifier [src] - 🧩
    • discriminators
      • AuxDiscriminator [k2/k3] - 🧩
      • Discriminator [k2/k3] - 🆙
      • ResDiscriminator [k2/k3] - 🆙
    • generators
      • Generator [k2/k3] - 🆙
      • ResGenerator [k2/k3] - 🆙
  • utils
    • checks
      • checkMetrics [src]
      • checkOptimizer [src]
    • preprocessing
      • invertColumnTransformer [src]
    • reports
      • HPSingleton [src]
      • getSummaryHTML [src] - 🆙

🆙 Upgrade to Keras 3

Keras 3 has introduced new appealing features but at the cost of breaking the backward compatibility with the previous versions as reported in https://github.com/mbarbetti/pidgan/issues/4. PIDGAN has been massively rewritten to be compatible with the new multi-backend Keras 3 and to make the code execution as similar as possible on TensorFlow < 2.16 (with Keras 2) and TensorFlow >= 2.16 (with Keras 3).

🧩 Minor changes

Aiming to migrate the code to Keras 3 being as transparent as possible for the user, that means keeping the compatibility with Keras 2 and not requiring any changes on existing scripts, the vast majority of PIDGAN classes and functions has needed minor changes or spurious adjustments to be aligned with the new package design.

🐛 Bug fixes

  • LearnRateCosineDecay [k2/k3]

    Problem. The scale factor used for the learning rate scheduling was defined as
    decayed = (1 - alpha) * (cosine_decay + alpha)
    instead of
    decayed = (1 - alpha) * cosine_decay + alpha
    Solution. The scale factor has been corrected according to the TensorFlow definition.

pidgan -

Published by mbarbetti 10 months ago

About

Relying on TensorFlow and Keras as backends, pidgan is a Python package designed to simplify the implementation and training of GAN-based models intended for High Energy Physics (HEP) applications.

Available modules

🐛 Bug fixes

  • invertColumnTransformer

    Problem. When the column indices passed to a transformer of the scikit-learn's ColumnTransformer aren't adjacent, this custom function has an unexpected behavior mixing the output columns.
    Solution. The function has been rewritten from scratch trying to follow a logical procedure that should mitigate new issues with the inversion of the ColumnTransformer.

🧩 Minor changes

Since regularization terms applied to either generator or discriminator can be extremely data-dependent, if they are computed also during the test step, it can produce loss values significantly different from the ones resulting in the train step. Hence, the GAN algorithms were updated so that the various _compute_*_loss methods take an additional boolean argument, called test, to avoid to compute any regularization terms during the test steps.

‼️ Note

This is the first release for Zenodo.

pidgan - v0.1.2

Published by mbarbetti 11 months ago

About

Relying on TensorFlow and Keras as backends, pidgan is a Python package designed to simplify the implementation and training of GAN-based models intended for High Energy Physics (HEP) applications.

Available modules

✨ New features

pidgan - v0.1.1

Published by mbarbetti 11 months ago

About

Relying on TensorFlow and Keras as backends, pidgan is a Python package designed to simplify the implementation and training of GAN-based models intended for High Energy Physics (HEP) applications.

Available modules

🐛 Bug fixes

  • Generator

    Problem. Using the generate() method with seed=None, the generator player used to produce always the same output.
    Solution. The default seed value used by the tf.random.set_seed() method has been removed.

pidgan - First beta release of the pidgan package out now! 🔥

Published by mbarbetti 12 months ago

About

Relying on TensorFlow and Keras as backends, pidgan is a Python package designed to simplify the implementation and training of GAN-based models intended for High Energy Physics (HEP) applications. Originally designed to develop parameterizations to flash-simulate the LHCb Particle Identification system, pidgan can be used to describe a wide range of LHCb sub-detectors and succeeds in reproducing the high-level response of a generic HEP experiment. The pidgan package will be publicly presented during the Fifth ML-INFN Hackathon: Advanced Level where it will be used to parameterize high energy particle jets as detected and reconstructed by the CMS experiment.

Available modules