Skip to content

PIDGAN v0.2.0

Latest
Compare
Choose a tag to compare
@mbarbetti mbarbetti released this 02 Jul 10:58
· 7 commits to main since this release

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 #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.