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
callbacks
metrics
optimization
players
classifiers
discriminators
generators
utils
🆙 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.